я определяю класс-оболочку, которая может быть использована в качестве капель замены для полезной нагрузки, используя оператор приведения, однако я столкнулся с проблемой с указателем полезной нагрузки:оператор приведения к указателю
компилятор (г ++ 4.8. 3) жалуется на:
ошибка: базовый операнд '->' имеет не-указательный тип 'wrapper' w-> a = 3;
Неявный оператор-оператор wrapper::operator T&
вызывается для всех операций указателя, кроме разыменования, есть ли что-то особенное относительно оператора ->
?
struct pl{int a;};
struct wrapper{
typedef pl* T;
T t;
operator T&(){return t;}
};
int main(){
wrapper w;
w.t=new pl();
(*w).a=1;//ok
w[0].a=2;//ok
w->a=3;//does not compile
++w;//ok
if(w){}//ok
}
Примечание: подобная ошибка с лязгом 3,3
Оператор '->' имеет свою подпись, вы должны предоставить T & operator ->(), чтобы он работал. – erenon
Вам нужно будет передать 'w' функции, ожидающей' pl * '. – juanchopanza