Como dice el título. El siguiente es mi código esqueleto.ejecutar los hilos de la función de miembro de clase en 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 función B necesita las variables de miembro de CLASS.
Pero tengo un código de error cuando compilé esto.
Es "no se puede convertir el argumento 3 de 'DWORD (__stdcall CLASS :: *) (LPVOID)' a 'LPTHREAD_START_ROUTINE'" o algo por el estilo.
No sé si es lo mismo en el entorno inglés.
¿Alguien puede ayudar, por favor?
Y delante de las salidas OP obtener cualquier idea inteligente: los punteros de función de miembro de clase no estáticos son * extraños *. No solo las convenciones de llamada son diferentes de un simple 'func (classname * this, ...)', la _pointer representation_ es rara - en algunos casos, los punteros de función de miembro de clase pueden llegar a ser 2 veces el tamaño de un puntero de función normal, entonces ni siquiera pienses en forzar el elenco :) – bdonlan