Zeiger auf Memberfunktion
-
chrische5 schrieb:
Hallo
Nein die Instanz heisst natürlich nicht "class". Das war nur ein etwas blöd gewählter Alias von mir. Wir können Sie ab jetzt ja m_class nennen.
Besteht das Problem denn immernoch? Wenn ja, poste doch mal einen Code-Snippet.
Der Compiler würde doch eine solche Namenswahl nicht erlauben, oder?
Nein.
Gruß Caipi
-
Caipi schrieb:
chrische5 schrieb:
Hallo
Nein die Instanz heisst natürlich nicht "class". Das war nur ein etwas blöd gewählter Alias von mir. Wir können Sie ab jetzt ja m_class nennen.
Besteht das Problem denn immernoch? Wenn ja, poste doch mal einen Code-Snippet.
[/quote]
Das Problem besteht immernoch. Ich habe doch eigentlich im ersten Post alles geschickt. Ich weiss nicht recht, was ich noch an Code posten soll.
chrische.
-
Eventuell die Fehlermeldung, die _nach_ der von Caipi vorgeschlagenen Änderung kommt?

-
Hallo
LordJaxom schrieb:
Eventuell die Fehlermeldung, die _nach_ der von Caipi vorgeschlagenen Änderung kommt?

Ich hatte den einen Post übersehen.
Wenn ich die Zeile dementsprechend ändere (hatte ich vorher auch schon probiert) bekomme ich folgende Fehlermeldung:
error C3861: 'pFunc': identifier not found
Auch hier ist mir eigentlich klar, was diese Fehlermeldung bedeutet, aber im meinem Zusammenhang verstehe ich nicht, wie ich sie beheben soll.
chrische
-
-
Hallo
tipp schrieb:
Vielen Dank für diesen Link. Ohne den hätte ich es erst gar nichtso weit gebracht, wie jetzt schon bin. Ich bräuchte also etwas konkreter Hilfe.
Danke
chrische
-
Hallo
Hat keiner von Euch eine Idee, was ich hier falsch mache?
chrische
-
Hier sind wohl zwei Klassen im Spiel. Class und Class1.
Class1::pFunc ist ein Zeiger auf eine Memberfunktion von Class.
class.pFunc ist jetzt nur ein Zeiger ohne Instanz. class ist in Deinem ersten Post vom Type Class1. Dir fehlt also noch eine Instanz von Class, deren Funktion gerufen werden soll. BTW, die Benamsung macht es schwierig Deine Fragestellung zu verstehen.
Siehe unten stehendes Beispiel (compiliert und getestet mit gcc 3.3.4):#include <iostream> class A { public: int f(); }; int A::f() { return 1; } class B { public: B(); int (A::*pFunc)(); }; B::B() { pFunc = &A::f; } int main() { B b; A a; std::cout << (a.*b.pFunc)() << std::endl; }
-
Hallo
Das hat mir sehr geholfen.
Vielen Dank
chrische
-
Übrigens gibts dazu nen guten Artikel in der FAQ.
Da steht auch noch viel anderes interessantes...
-
Hallo
phlox81 schrieb:
Übrigens gibts dazu nen guten Artikel in der FAQ.
Da steht auch noch viel anderes interessantes...Mit dem Artikel hatte ich bereits gekämpft. Bezieht sich der zweite Satz deiner Aussage auf den Artikel oder auf die FAQ allgemein?
chrische