Wie der Titel sagt. Das folgende ist mein Code-Skelett.führen Sie Threads der Klassenmitgliedsfunktion in C++
class CLASS
{
public:
void A();
private:
DWORD WINAPI B(LPVOID);
};
void CLASS::A()
{
DWORD (WINAPI CLASS::*thread)(LPVOID) = &CLASS::B;
...
CreateThread(NULL, 0, thread, &arg, 0, NULL);
...
}
Die Funktion B benötigt CLASS-Member-Variablen.
Aber ich habe einen Fehlercode, als ich das kompiliert habe.
Es ist "kann nicht konvertieren Argument 3 von" DWORD (__stdcall CLASS :: *) (LPVOID) "zu" LPTHREAD_START_ROUTINE "oder so ähnlich.
Ich weiß nicht, ob es in der englischen Umgebung gleich ist.
kann jemand bitte helfen?
und vor der OP beginnt Irgendwelche cleveren Ideen bekommen - nicht statische Klassenmitgliedsfunktionszeiger sind * seltsam *. Die Aufrufkonventionen unterscheiden sich nicht nur von einem einfachen 'func (Klassenname * this, ...)', die Zeigerdarstellung ist seltsam - in einigen Fällen können Klassenelementfunktionszeiger die doppelte Größe eines normalen Funktionszeigers haben Denken Sie nicht einmal daran, die Besetzung zu zwingen :) – bdonlan