Threads und Klasse??
-
danke, es geht!
-
Habe da jetzt noch eine Frage:
Eine Funktion in meiner Klasse akzeptiert Clients (Winsock).
Jedes Mal wenn das funktioniert hat, sollte eine Funktion in dem Hauptprojekt aufgerufen werden. Wie mache ich das?
-
Wo ist dabei dein Problem?
-
Du hast mich vermutlich falsch verstanden:
Die klasse ist in einer Bibliothek. Wenn ich jetzt einen Client akzeptiere mit Erfolg soll im Hauptprojekt eine Funktion aufgerufen werden. Diese Funktion ist aber praktisch nicht bekannt, da sie ja je nach Projekt, in dem ich meine Lib benutze untershiedlich ist.Ich meine soetwas wie bei CreateThread oder SetTimer.
danke!
cu para
-
Dann übergibst du halt einen Funktionszeiger
-
Ja das ist ja gerade die Frage! Wie mache ich sowas? Und das größere Problem ist dann wie ich diese Funktion aufrufe??
-
Das steht in jedem guten C/C++ Buch / Tutorial
-
Also habs jetzt so:
void (*funcNotify)(int iCode);
Und:
function(void _funcNotify) { ... funcNotify = _funcNotify; ... }
Geht aber net. Was mach ich falsch?
-
man, völlig falsch. guck doch einfach in ein buch oder tutorial? ist das so schwer??!
-
Hab ich ja, aber ich weiss nicht wie es geht, wenn die Funktion über eine Funktion übergeben wird, hab edazu auch nichts gefunden. Anders klappt es ja, aber ich brauche es so.
Wieso kannst du es mir nicht einfach sagen
Naja...
-
Also ich glaube das geht so:
Als erstes machst du ein typedef, dann is alles leichter, also so:typedef void(*pFunc)(int); //Zeiger auf Funktion vom Typ void, die einen int //als Argument braucht
Mit pFunc kannst du jetzt Zeiger auf Funktionen von diesem Typ erstellen.
Wenn du eine Funktion als Argument übergeben wilst, sieht das in etwa so aus:
void Funktion(pFunc func) //Deklaration einer Funktion, die einen Zeiger auf { //oben genannten Funktionstyp als Argument erwartet //hier is irgendein Code *func(x); //Hier wird deine Funktion aufgerufen, mit * //x muss natürlich vorher irgendwo als int deklariert werden //wieder irgendein Code };
In der Zeile "void Funktion(pFunc func)" wir nicht das int-Argument der Funktion mit
übergeben. Wenn du das so möchtest, musst du noch einen 2. Parameter übergeben,
also in etwa sovoid Funktion (pFunc func,int x) { *func(x); };
Das müsste so alles passen, zumindest hab ich auf die Schnelle keinen Fehler gefunden.
mfg Michael