誰でも、Fooクラスのオーバーロードされた演算子がFoo *型のポインタから呼び出されていない理由を説明できますか?C++のオーバーロードされた演算子 - >()が呼び出されていませんか?
#include <iostream>
using namespace std;
class Foo {
public:
Foo * operator ->() {
cout << "calling Foo * operator ->()\n";
return this;
}
int x;
};
void main() {
Foo f;
Foo * pF = &f;
pF->x; // Why is overloaded operator-> not being called here?
(pF->operator->())->x; // This works.
cout << "End test.\n";
}
あなたは、本質的にオペレータを呼び出しているため、2番目の文は動作します - あなたのポインタpFのを使用する方法>。そこには過負荷はありません。以下で解説するように、ポインタではなくインスタンスのオーバーロードしかできません。 –