Come dice il titolo. Quello che segue è il mio scheletro di codice.eseguire thread della funzione membro della classe 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);
...
}
la funzione B richiede le variabili membro CLASS.
Ma ho un codice di errore quando ho compilato questo.
È "impossibile convertire l'argomento 3 da" DWORD (__stdcall CLASS :: *) (LPVOID) "a" LPTHREAD_START_ROUTINE "" o qualcosa del genere.
Non so se è lo stesso in ambiente inglese.
qualcuno può aiutare per favore?
E prima che inizi la OP ottenere idee intelligenti - i puntatori di funzioni dei membri della classe non statici sono * strani *. Non solo le convenzioni di chiamata differiscono da un semplice 'func (classname * this, ...)', la _pointer representation_ è strana - in alcuni casi i puntatori di funzione dei membri della classe possono diventare 2x della dimensione di un normale puntatore a funzione, quindi non pensare nemmeno a forzare il cast :) – bdonlan