Beiträge von Mokka

    hmmm...
    ich habe jetzt das problem, dass ich die implementierung der callback funktion in der main methode meines programms machen möchte. => ich kann von keiner klasse ableiten. gibt es dafür auch eine lösung?

    der aufrufer ist also in einer eigenen klasse. dort erfolgte vorhin auch die zuweisung zum pointer usw. .
    nur die funktionalität meines callbacks steht in main...

    nein ich habe den code mittlerweile modifiziert. es wird eine funktion mit 2 parametern übergeben.

    leider bin ich der absolute c/c++ noob => keine ahnung von callbacks :(

    hier noch mein code:
    Definition:[INDENT] static void getCallback( void (*function) (int a, int b) );
    static void *externalFunction;
    [/INDENT]Initialisierung des Pointers:[INDENT] void (Class::*externalFunction)(int, int) = NULL; //hat vorher anders ausgesehen, aber das hab ich von einer tutorial seite.
    [/INDENT]Implementierung der Methoden:[INDENT] void Class::getCallback( void (*function) (int a, int b) )
    {[INDENT] externalFunction = &function; //<-- ab hier nimmt's der compiler nicht mehr
    [/INDENT]}
    void Class::caller()
    {[INDENT] int a = 5;
    int b = 4;
    externalFunction( a, b );
    [/INDENT]}
    [/INDENT]

    kann ich dem pointer beim aufruf dann auch argumente mitgeben?

    immer wenn ich das versuche, erhalte ich einen error:
    error C2064: term does not evaluate to a function taking 2 arguments

    was eigentlich verständlich ist, da er ja zur compilezeit noch nicht weiß, auf welche methode er einmal zeigen wird. allerdings habe ich versucht, gleich bei der initialisierung des pointers auf eine statische methode: foo( int a, int b ) zu verweisen, welche einfach einen error ausgibt, falls sie aufgerufen wird. damit müsste der compiler doch die beiden argumente kennen, oder?:(

    ach ja und bezüglich statisch: es sind sowohl die methode die dem pointer eine methode zuweist, als auch die zugewiesene methode, als auch der pointer selbst statisch. einzig der aufrufer war dynamisch...hab das aber auch schon statisch getestet -> hat auch nicht funktioniert...

    danke erstmal!

    aber weißt du zufällig auch, wie ich die übergebene methode aus einer anderen methode heraus aufrufen kann? ich möchte die methode in einer art

    void init(void (*cb) (int))

    einmal aufrufen und dann als member meiner klasse verwenden, um sie dann aus einer anderen member methode heraus aufzurufen...

    ist das auch irgendwie möglich?

    EDIT: also was ich genau will: den pointer auf die methode einmal übergeben und dann aus meiner klasse heraus immer aufrufen wann ich will.

    hallo!
    ich möchte in C++ eine methode erstellen, welche eine Funktion als Parameter übergeben bekommt. (Also ähnlich der glut methoden wie bspw. void glutDisplayFunc( void (*) (void) func )) nun habe ich bereits eine ähnliche methode erstellt und der compiler beschwert sich auch nicht, aber ich habe keine ahnung, wie ich aus meiner klasse die übergebene funktion aufrufe.

    was genau muss ich machen um die funktion auch benutzen zu können?

    ich habe nur einen pointer auf die übergebene funktion...wie kann ich den "einsetzen"?

    danke schon mal im voraus.:D