la CreateThread vuole un puntatore a funzione, che è diverso da un puntatore a membro.
La differenza principale risiede nel fatto che per poter chiamare un membro di una classe, bisogna passargli il puntatore a "this", parametro che il compilatore inserisce in automatico nello stack.
Non c'è verso di trasformare una funzione membro in una normale funzione, a meno che tu non la dichiari "static". In quest'ultimo caso, però, la funzione membro non potrà accedere alle properties della classe che non siano a loro volta dichiarate static (proprio perchè gli manca un "this" da dereferenziare).
Quindi ti conviene usare un passaggio a "due tempi".
- Dichiari una normale funzione (o un membro static) che passerai a CreateThread
- Passi come argomento a questa funzione, l'istanza della classe che ti serve
- Dentro la funzione static, chiami il puntatore a membro usando il parametro che gli è stato passato
E' una procedura un po' macchinosa, ma è l'unica che conosco per mantenere un comportamenteo Object Oriented quando si tratta con puntatori a funzione in stile C.
|