我定义,可以用来作为一个下拉更换为使用转换运算符的有效载荷的封装类,但是我碰上与指针有效载荷的问题:转换运算符的指针
编译器(克++ 4.8。 3)抱怨:
错误:' - >'的基本操作数具有非指针类型'包装' 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 2014-12-02 20:18:38
你必须将'w'传递给一个期待'pl *'的函数。 – juanchopanza 2014-12-02 20:19:57