2014-03-07 67 views
0

我想重載一個例子「 - >」。根據教程,簽名將是A :: operator - >()來反映a-> b。運營商的例子 - >超載

函數如何識別哪個成員將被操作?

我會假設它可以返回指向類,對象或引用的指針。有什麼值得注意的,例如處理智能指針屬性等。

+0

您能否對最後一段更精確? – Brian

+0

'operator - >()'實現不關心正在操作哪個成員;它只會返回一個'T *',如果'T'包含一個名爲'b'的成員,代碼將會被編譯。 – Praetorian

回答

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; 
}