Es ist ein Zeiger, also versuchen Sie stattdessen:
a->f();
Grundsätzlich wird der Operator .
(der für den Zugriff auf die Felder und Methoden eines Objekts verwendet wird) für Objekte und Referenzen verwendet.
A a;
a.f();
A& ref = a;
ref.f();
Wenn Sie einen Zeigertyp haben, müssen Sie ihn zuerst dereferenzieren, um eine Referenz zu erhalten:
A* ptr = new A();
(*ptr).f();
ptr->f();
Die a->b
Notation ist normalerweise nur eine Abkürzung für (*a).b
.
Ein Hinweis zu intelligenten Zeigern
Das operator->
kann überladen werden, was insbesondere von Smart Pointern verwendet wird. Wenn Sie intelligente Zeiger verwenden ->
, beziehen Sie sich auch auf das spitze Objekt:
auto ptr = make_unique<A>();
ptr->f();