PDA

View Full Version : [C++] Callback template: perchè non funziona?


tomminno
04-09-2007, 11:21
class Run
{
DWORD CALLBACK run();
}

template<class T, DWORD (__stdcall T::*F)()>
DWORD CALLBACK Callback(void *p)
{
return ((reinterpret_cast<T*>(p))->*F)();
}

CreateThread(NULL, 0, Callback<_run, &Run::run>, this, 0, &dwTid);

Perchè il compilatore si lamenta che non riesce a convertire DWORD (_stdcall*)(void*) in LPTHREAD_START_ROUTINE visto che sono la stessa cosa?

kk3z
04-09-2007, 17:15
Prova con DWORD WINAPI invece di DWORD CALLBACK

tomminno
05-09-2007, 10:23
Prova con DWORD WINAPI invece di DWORD CALLBACK

Già provato anche con _stdcall di cui WINAPI e CALLBACK sono alias.
Sembra proprio che sia l'utilizzo di una funzione o metodo template statico che non gli aggrada, eppure dovrebbe essere corretto.
Il compilatore è VS2005.