Supportnet Computer
Planet of Tech

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

Antwort 2 von CND

das läuft nicht

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

#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

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: