Друг прислал мне свой класс резьбы. Теперь я просто хочу запустить прослушиватель, но нить не хочет принимать эту функцию. Я хочу выполнить функцию (определенную в static class Networks
) THREAD listen(void* args)
. THREAD
является #define THREAD unsigned __stdcall
Функция не хочет принимать мои аргументы?
Networks::init() {
listenerth = thread();
listenerth.run(listen, NULL, "listener");
}
В class thread
он определил run
в void run(THREAD func(void*), void* args, const char* pname);
Как я могу получить, чтобы работать слушать в другом потоке либо?
Сообщение об ошибке: main.cpp (19): ошибка C3867: «Сети :: прослушивание»: вызов функции отсутствует список аргументов; использовать «& сети :: слушать», чтобы создать указатель на член
Но когда я двигаю мышь к месту ошибки (символ слушать), он показывает мне это в подсказке (да, MS VC++):
unsigned int __stdcall Networks::listen(void* data)
Error: argument of type "unsigned int (__stdcall Networks::*)(void *data)" is incompatible with parameter of type "unsigned int (__stdcall )(void)"
вы также должны опубликовать точное сообщение об ошибке, которое дает вам компилятор. – Axarydax
Имеет ли первый пример кода [этот ответ] (http://stackoverflow.com/questions/3108631/how-to-pass-a-pointer-to-a-member-function-to-ac-function/3108745# 3108745) помощь? – sbi
Возможный дубликат [Использование функции члена класса C++ как функции обратного вызова C] (http://stackoverflow.com/questions/1000663/using-ac-class-member-function-as-ac-callback-function) –