CString
От: Saltarello СССР http://saphirelab.hut.ru/
Дата: 23.04.03 14:30
Оценка:
Здравствуйте!

Переведите мне на русский, что означает сия конструкция:

CString str1;
PString str2=(PString &)str1;

где PString — строковый класс, аналогичный CString.

Заранее спасибо

24.04.03 13:54: Перенесено из 'MFC'
Не умножай сущностей без необходимости
Re: CString
От: e-smirnov  
Дата: 24.04.03 06:05
Оценка:
Здравствуйте, Saltarello, Вы писали:

Я так понимаю, что и там и там определен одинаковый оператор приведения...

class PString
{
...
PString &operator=(const char *value);
operator const char *() const;
...
}

Ну а уж CString сам по себе крут и в состоянии о себе позаботиться.
Re: CString
От: bedward70 Россия http://www.bedward70.narod.ru/
Дата: 24.04.03 06:09
Оценка:
Здравствуйте, Saltarello, Вы писали:

S>Переведите мне на русский, что означает сия конструкция:


S>CString str1;

S>PString str2=(PString &)str1;

1. Делаем ссылку класса PString из str1,( (PString &)str1 ). Предполагается, что создается веременный объект PString&. Соответственно должен быть конструктор PString(CString& _str); или оператор типа PString& operator & (CString& _str), или что то подобное

2. Делаем присваивание, полученного в пункте 1,str2.
С уважением, Эдвард
Re: CString
От: Bell Россия  
Дата: 24.04.03 10:09
Оценка:
Здравствуйте, Saltarello, Вы писали:

S>Здравствуйте!


S>Переведите мне на русский, что означает сия конструкция:


S>CString str1;

S>PString str2=(PString &)str1;

S>где PString — строковый класс, аналогичный CString.


S>Заранее спасибо


Мне кажется, это попытка скормить объект CString конструктору копии PString.
Впрочем гадать можно долго — приведи открытый интерфейс PString.
Любите книгу — источник знаний (с) М.Горький
Re[2]: CString
От: Павел Кузнецов  
Дата: 24.04.03 10:10
Оценка: +2
Здравствуйте, bedward70, Вы писали:

S>> CString str1;

S>> PString str2=(PString &)str1;

b> 1. Делаем ссылку класса PString из str1,( (PString &)str1 ).

b> Предполагается, что создается веременный объект PString&.

Не предполагается. Приведение к неконстантной ссылке никогда не создает
временные объекты.

b> Соответственно должен быть конструктор PString(CString& _str); или

b> оператор типа PString& operator & (CString& _str), или что то
b> подобное

Не должен.

В данном случае конструкция "(PString &)str1" означает: трактовать
объект типа CString как объект типа PString. Для того, чтобы это работало,
внутреннее представление PString должно совпадать с CString.
Posted via RSDN NNTP Server 1.5 beta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[2]: CString
От: Павел Кузнецов  
Дата: 24.04.03 10:10
Оценка:
Здравствуйте, e-smirnov, Вы писали:

e> Я так понимаю, что и там и там определен одинаковый оператор

e> приведения...

Это здесь ни при чем. В случае:

CString str1;
PString str2=(PString &)str1;

никакие операции приведения вызваны не будут.
Posted via RSDN NNTP Server 1.5 beta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[3]: CString
От: e-smirnov  
Дата: 24.04.03 11:38
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>объект типа CString как объект типа PString. Для того, чтобы это работало,

ПК>внутреннее представление PString должно совпадать с CString.

Значит ли это, что PString — обязательно наследник CString?
внутреннее представление — это что?
Re[4]: CString
От: Bell Россия  
Дата: 24.04.03 11:46
Оценка: 2 (1)
Здравствуйте, e-smirnov, Вы писали:

ES>Значит ли это, что PString — обязательно наследник CString?

Нет. Если бы CString был public предком PString, то приведение (CString&) не требовалось бы.
ES>внутреннее представление — это что?
данные — члены, виртуальные табдицы и т.д. — структура самого объекта.
Любите книгу — источник знаний (с) М.Горький
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.