0
我想重載一個例子「 - >」。根據教程,簽名將是A :: operator - >()來反映a-> b。運營商的例子 - >超載
函數如何識別哪個成員將被操作?
我會假設它可以返回指向類,對象或引用的指針。有什麼值得注意的,例如處理智能指針屬性等。
我想重載一個例子「 - >」。根據教程,簽名將是A :: operator - >()來反映a-> b。運營商的例子 - >超載
函數如何識別哪個成員將被操作?
我會假設它可以返回指向類,對象或引用的指針。有什麼值得注意的,例如處理智能指針屬性等。
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;
}
您能否對最後一段更精確? – Brian
'operator - >()'實現不關心正在操作哪個成員;它只會返回一個'T *',如果'T'包含一個名爲'b'的成員,代碼將會被編譯。 – Praetorian