我想尝试重载“ - >”。根据教程,签名将是A :: operator->()以反映a-> b。
该功能如何识别要操作的成员?
我认为它可以返回指向类,对象或引用的指针。对此有何警告,例如:处理智能指针属性等。
答案 0 :(得分:1)
template<class T>
class PointerObject
{
public:
PointerObject(T* p)
: _p(p)
{}
T* operator ->()
{
return _p;
}
private:
T* _p;
};
struct A
{
int x, y;
};
int main()
{
A a;
PointerObject<A> po(&a);
po->x = 1;
po->y = 1;
}