Funtkionszeiger
-
Skym0sh0 schrieb:
schrieb mal bie der übergabe klasse::funkname hin also mit dem klassen namen
Den Namen der Klasse in der ich mich befinde?? Wie das?
-
Er meint es wohl so:
classB->functionB( void (*classA::functionA)(int));
-
Meiner schrieb:
Er meint es wohl so:
classB->functionB( void (*classA::functionA)(int));tatsächlich?
Gleicher fehler...
-
Memberfunktionszeiger haben folgende Syntax:
void (classA::*functionA)(int)Aber wenn du die Funktion nur übergeben willst, musst du sie nicht deklarieren.
-
Nexus schrieb:
Memberfunktionszeiger haben folgende Syntax:
void (classA::*functionA)(int)Er/Sie braucht doch aber die Syntax beim Aufrufen, oder nicht? Also dass, was Skym0sh0 schon schrieb:
classB->functionB( &classA::functionA );
-
Hab ich grad noch gesehen, daher der Edit.
-
Badestrand schrieb:
Nexus schrieb:
Memberfunktionszeiger haben folgende Syntax:
void (classA::*functionA)(int)Er/Sie braucht doch aber die Syntax beim Aufrufen, oder nicht? Also dass, was Skym0sh0 schon schrieb:
classB->functionB( &classA::functionA );Funktioniert leider beides nicht, habe ich auch schon probiert...

Ich finde das sehr komisch.
Funktioniert das bei euch?
-
sry, falscher thread
-
struct A { void func( int a ) { std::cout << "I've got " << a << " dogs" << std::endl; } }; void foo( A* obj, void(A::*fptr)(int), int val ) { ((*obj.*fptr))( val ); } int main() { A a; foo( &a, &A::func, 120 ); }edit: Zeiger auf Memberfunktionen unterscheiden sich leider ein wenig von Zeigern auf freie Funktionen, ist halt ein wenig komplizierter..

-
ähm ja, so funktioniert das, aber ich befinde mich in einer Klasse und möchte die Funktion der Klasse, in der ich mich befinde, übergeben.
-
dfdfdfd schrieb:
ähm ja, so funktioniert das, aber ich befinde mich in einer Klasse und möchte die Funktion der Klasse, in der ich mich befinde, übergeben.
Und wo genau ist das Problem?
-
int main() { A a; foo( &a, &A::func, 120 ); //Ich befinde mich in KlasseA, wie soll ich da a übergeben? }
-
*this
Aber an der Stelle würde ich auch mal auf Boost.function aufmerksam machen, was da sehr angenehm ist(auch mit boost::mem_fn und boost::bind)