Kann mir bitte jemand erklären, warum der überladene Operator -> für Klasse Foo nicht von einem Zeiger vom Typ Foo * aufgerufen wird?C++ überladener Operator ->() wird nicht aufgerufen?
#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";
}
Die zweite Anweisung funktioniert, weil Sie im Wesentlichen die Betreiber fordern -> Methode der Zeiger pF. Dort findet keine Überlastung statt. Wie unten beantwortet, können Sie Operatoren nur für Instanzen, die keine Zeiger sind, überladen. –