kann man Zeiger auf Methode an Funktion übergeben?
-
Kann ich einer Funktion, die als Argument einen Funktionszeiger erwartet, irgendwie auch einen Zeiger auf eine nichtstatische Klassenmethode übergeben? Habe schon alles mögliche probiert, funzt aber alles nicht
void MainFunction(void (*func)()) { (*func)(); return; }; void aFunction() { return; }; class aClass { public: void DoSomething() {}; }; int main() { aClass MyClass; void (aClass::*aClassMethod)() = &aClass::DoSomething; MainFunction(&aFunction); //MainFunction(&aClassMethod); //geht nicht...gibts da 'ne Lösung? wait(); return 0; }
-
google gibt über 400 links zum thema funktionspointer und über 900 zum thema funktionszeiger
[ Dieser Beitrag wurde am 08.05.2003 um 17:31 Uhr von Korbinian editiert. ]
-
Nein kannst du nicht, weil nichtstatische Klassenmethoden noch einen impliziten this Zeiger mit sich rumschleppen!
-
Naja, kann man doch mit einem netten kleinen Workaround... ein paar tage vorher war glaub ich ne ganz ähnliche Frage. (Ging um nen Callback der auf eine Klassenmethode zeigen sollte)
-junix
-
sorry, aber ich finde den Thread nicht. Habt ihr noch ein Stichwort, nach dem ich suchen kann?
-
http://www.cuj.com/articles/1999/9912/9912d/9912d.htm?topic=articles
das könnte dir helfen wenn der funktion zeiger ein void* als paramter hat
-
ich glaub das kann ihm alles nicht helfen, denn wie schon erwaehnt ist es bei einer methode der fall das klasseninterne atribut verwendet werden (sonst ist es ja auch nur ne funktion in einer klasse). wo sollte die methode die atribute her bekommen wenn sie von irgendwo ueber einen zeiger aufgerufen wird?
-
schau dir mal mein link an