Оператор приведения типа и указаетли
От: Всеволод Россия  
Дата: 14.03.06 15:38
Оценка:
Всем привет ! Сильно не ругайте, к вечеру плохо соображаю. Поиск результатов не дал.
Пример:
class A
{
public:
   int i;
   operator int () { return i; };
   operator int* () { return &i; };
};

A a;
A *pA=new A();

int i;
int *pi;

i=a; // работает
pi=a; // работает
pi=*pA; // работает
pi=pA; // НЕ РАБОТАЕТ

Мне нужно именно последний вариант. Где я не прав и как меня вылечить ?
Re: Оператор приведения типа и указаетли
От: Bell Россия  
Дата: 14.03.06 15:45
Оценка:
Здравствуйте, Всеволод, Вы писали:

В>pi=pA; // НЕ РАБОТАЕТ

Справа стоит встроенный тип — указатель на A. Никакие определенные пользователем преобразования не рассматриваются.
Тебя же наверняка не удивляет вот это:
int i;
double d;
i = d;//Ok
int* pi;
double* pd;
pi = pd;//error

Любите книгу — источник знаний (с) М.Горький
Re: Оператор приведения типа и указаетли
От: HiSH Россия http://m0riarty.ya.ru
Дата: 14.03.06 15:47
Оценка:
Здравствуйте, Всеволод, Вы писали:

В>Всем привет ! Сильно не ругайте, к вечеру плохо соображаю. Поиск результатов не дал.


В>i=a; // работает

В>pi=a; // работает
В>pi=*pA; // работает
В>pi=pA; // НЕ РАБОТАЕТ
В>[/ccode]
В>Мне нужно именно последний вариант. Где я не прав и как меня вылечить ?

ИМХО, только
pi=reinterpret_cast<int*>(pA);

Преобразование из A* в int* нельзя определить никак

Или, как вариант, можно обернуть A в умный указатель, который будет поддерживать все нужные тебе преобразования.
... << RSDN@Home 1.1.4 stable SR1 rev. 568 with Кирпичи — В Огонь!>>
Re: Оператор приведения типа и указаетли
От: Аноним  
Дата: 14.03.06 19:24
Оценка:
Здравствуйте, Всеволод, Вы писали:

В>i=a; // работает

В>pi=a; // работает
В>pi=*pA; // работает
В>pi=pA; // НЕ РАБОТАЕТ
В>[/ccode]
В>Мне нужно именно последний вариант. Где я не прав и как меня вылечить ?

Так годится?
pi = (*pA);
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.