Supportnet / Forum / Anwendungen(Java,C++...)
Funktionen speichern und wieder aufrufen (c++)
Frage
hallo,
ich bräuchte ein bisschen hilfe bei callbacks.
ich weiss nich ganz wie die laufen.
ich will eine beliebige funktion in einer variable speichern und sie nach belieben aufrufen.
danke für euere hilfe
CND
Antwort 1 von semi
Schau Dir die folgenden Seiten an.
http://www.function-pointer.org/
http://www.vollmann.com/en/pubs/meta/index.html
http://www.function-pointer.org/
http://www.vollmann.com/en/pubs/meta/index.html
Antwort 2 von CND
das läuft nicht
eine funktion heisst:
und die funktion die ich übergeben will ist so definiert:
aber ich bekomme beim aufruf
den fehler
Warum?
eine funktion heisst:
int KlasseA::SetOnConnected(int (*Function) (byte*));und die funktion die ich übergeben will ist so definiert:
int KlasseB::OnConnected(byte* Wert1);aber ich bekomme beim aufruf
klassea.SetOnConnected(KlasseB::OnConnected);
den fehler
error C2664: KlasseA::SetOnConnected' : Konvertierung des Parameters 1 von 'int (byte*)' in 'int (__cdecl *)(byte*)' nicht möglich
Warum?
Antwort 3 von semi
Mach Dir das Leben nicht so schwer.
Du kannst es viel einfacher wie folgt machen
Gruß,
Michael
Du kannst es viel einfacher wie folgt machen
#include <iostream.h>
class Callback {
public:
virtual void f(char *) = 0;
};
class A : public Callback
{
public:
void f(char *s) {
cout << "A::f(\"" << s << "\")" << endl;
}
};
class B : public Callback
{
public:
void f(char *s) {
cout << "B::f(\"" << s << "\")" << endl;
}
};
class CallbackTest
{
public:
void doTest(Callback *callback) {
callback->f((char *)"Dies ist ein Test");
}
};
int main() {
CallbackTest test;
A a;
B b;
test.doTest(&a);
test.doTest(&b);
return 0;
}Gruß,
Michael

