Funktionsaufruf mit Hilfe eines Member-Pointers
-
Ich habe 2 Klassen (A und
erstellt, die sich gegenseitig verwenden.
Deshalb hab ich die Header Dateien mit Hilfe der Vorwärtsdeklaration eingebunden.
Dies funktioniert soweit.Nun möchte ich allerdings in der "main" eine Memberfunktion der Klasse B aufrufen (mit Hilfe eines Memberpointers, der in der Klasse A deklariert wurde)
Wie muss der Funktionsaufruf aussehen?
Danke für eure antworten.
-
Inwiefern bringt ein neuer thread einen Mehrwert?
Functionpointer auf Memberfunktion in Funktion übergeben.Zumal du offenbar noch nichtmal dein bisheriges Problem gelöst hast.
-
Doch dieses Problem hab ich mittlerweile gelöst.
Weil es ja jetzt im Prinzip um ein anderes Problem geht.
-
Ein paar Details wären nicht schlecht, ist der Zeiger in der Klasse zum Beispiel privat oder public? Wenn der Zeiger auf B in A public ist, ist es ja einfach:
objektA.pointerB->function();Lg freeG
-
Der Zeiger ist public. Es ist allerdings kein normaler Zeiger, sonder ein Zeiger auf eine Memberfunktion in B.
-
#include <iostream> struct B; struct A { void (B::*ptr)(); }; struct B { void foo() { std::cout << "Ta da!" << std::endl; } }; int main() { A a; B b; a.ptr = &B::foo; (b.*a.ptr)(); }
-
seldon schrieb:
#include <iostream> struct B; struct A { void (B::*ptr)(); }; struct B { void foo() { std::cout << "Ta da!" << std::endl; } }; int main() { A a; B b; a.ptr = &B::foo; (b.*a.ptr)(); }Danke "Seldon", so funktionierts perfekt!!!
-
esther schrieb:
Deshalb hab ich die Header Dateien mit Hilfe der Vorwärtsdeklaration eingebunden.
Oho!
Kannst du auch mit einem Auto radfahren? Vorwärtsdeklaration und Header einbinden sind zwei völlig unterschiedliche paar Schuhe, und das eine mit Hilfe der anderen geht schlicht und einfach nicht. Also, was hast du gemacht? Header mit include eingebunden oder die Klasse vorwärtsdeklariert?