Pointer auf Methode
-
Hi zusammen,
ohne lange um den heißen Brei herumzureden: Wie bekomme ich einen Pointer auf eine (nicht virtuelle) Methode?
Wenn ich eine eine Klasse C habe, die eine nicht virtuelle Methode "int c()" hat, habe ich (nach Lektüre einiger Tutorials) folgendes geschriebenstd::cout << &C::c << std::endl;
in der Erwartung einen Pointer (=4Byte-Wert) zu bekommen. Aber es wurde "1" ausgegeben. Noch schockierter war ich, als ich der Klasse eine 2. Methode "int cc()" hinzugefügt habe und
std::cout << &C::cc << std::endl;
ebenfalls "1" ausgespuckt hat...
Gibt es in Standard C++ keine Möglichkeit an die Adresse einer Methode zu kommen?
Gruss, Max
-
Caste nach void* - denn die Adresse wird als bool ausgewertet und nicht als Adresse.
-
cout << (void*)(&C::c) << endl;
liefert:
error: converting from `int (C::)()' to `void*'*Was mache ich falsch?
-
nix, methodpointer können nicht nach void gecastet werden(leider)
-
jo, mein Fehler
Es scheint so, als ginge es nicht.Scheinbar müssen Methodenpointer auch nicht wirklich eine echte Adresse haben...
-> http://docs.xbe.ch/arch/dev/cplusplus/part17.html#Q115
-
Das ärgert mich aber, dass ich keinen Pointer auf die bekomme
Aber danke für deine Hilfe
-
Max2004 schrieb:
Das ärgert mich aber, dass ich keinen Pointer auf die bekomme
Zeiger geht schon:
void (C::foo*)() = &C::c;
C c;
(c.*foo)(); //ruft c.c() aufnur die adresse ausgeben geht scheinbar nicht