Operator .* und ->*
-
In diesem Dokument sind die Operatoren .* und ->* aufgelistet. Was bewirken diese Operatoren und wie benutzt man sie?
-
mithilfe dieser operatoren kann man member pointer und method pointer aufrufen, die suche sollte mehr infos liefern
-
class A { int i; } int main() { A instance; A.i = 10; A* instanceptr = new A(); A->i = 10; }
d.h. wenn "eine Variable" eine Instanz ist, kannst du mit . auf die Member zugreifen. Wenn du aber nur nen pointer auf die Instanz hast must du mit -> arbeiten. Denn: instanceptr ist ja ein pointer und hat drum keine Member, d.h. du musst dem Compiler sagen, dass er das Member der Instanz auf die der ptr zeigt verwenden soll.
-
Das beantwortet aber nicht die Frage, weil beide Male der Pointer fehlt.
-
otze schrieb:
mithilfe dieser operatoren kann man member pointer und method pointer aufrufen
Ok, alles klar, danke
-
Ein einfaches Beispiel:
(das Beispiel von Gast221212 hat mit .* und ->* nichts zu tun)class X { public: void f() {}; }; int main() { typedef void (X::* Meth)(); X a; X* b( new X); Meth m( &X::f); (a.*m)(); ///< ruft a.f(); auf (b->*m)(); ///< ruft b->f(); auf delete b; }
Wobei ::* afaik auch noch ein Operator ist. ->* und .* kann man meines Wissens nach auch überladen (wozu auch immer
)
-
->* kann überladen werden, .* nicht (wozu auch immer). Siehe dazu 13.5/1 / 13.5/3