0
當具有此操作符重載的類互相嵌套時,operator - >()是否可以多次展開? 在進一步的示例中,表達式c-> foo()擴展爲c.operator - >() - > foo(),我期望第二次擴展發生,但它不會發生。有沒有什麼辦法讓操作符在使用整齊的語法嵌套時使用它?在C++中嵌套的重載操作符 - >()
class A
{
public:
void foo() {}
}
class B
{
private:
A* _a;
public:
A* operator->() const
{
return _a;
}
};
class C
{
private:
B* _b;
public:
B* operator->() const
{
return _b;
}
};
C c;
c->foo(); // Desired syntax, but error: 'foo' is not a member of 'B'
c.operator->()->operator->()->foo(); // Ok, but makes no sense
請考慮這個問題的理論!
'c.operator - >()'返回一個指針。 ' - >'的鏈接應用程序必然是一個內置的解引用操作符。因爲它是一個重載操作符,'c.operator - >()'應該返回某個類的實例或引用,但不是指針。 –
對,那正是我錯過的! – user3348108
考慮到C類是std :: unique_ptr,我不能重載只有返回值不同的運算符。 – user3348108