У меня проблемы с использованием pthread_create если передавать в аргумент метод класса, потому что компилятор постоянно выдает ошибку:
cannot convert 'void* (Server::*)(void*)' to 'void* (*)(void*)' for argument '3' to 'int pthread_create(pthread_t*, const pthread_attr_t*, void* (*)(void*), void*)' Server.cpp
у меня есть класс Server,у него есть приватный член pthread_t receivingThread_;
публичная функция void myFunc1()
и еще публичная функция void* myFunc2(void *args)
которая возвращает 0.
Тут описание функции, где я делаю вызов pthread_create()
myFunc1(){
pthread_create(&receivingThread_,NULL,&Server::myFunc2,NULL);
}
Однако не работает, скорее всего где то обычная ошибка, но почитав другие вопросы, я не могу понять как мне исправить свою. Заранее спасибо за помощь.
Вызвать нестатический член класса без указания объекта класса - нонсенс.
Если бы это был стандартный для C++ std::thread
, то ему можно было бы передать первым параметром this
и он бы радостно заработал - он достаточно умен для понимания таких вещей...
Но поскольку pthreads, по большому счету, C-библиотека, то нужен обходной путь - создание свободной функции, которая будет вызывать функцию-член для конкретного объекта.
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Я новичек в С++, объясните пожалуйста, почему не отрабатывает дружественная функция в main? Имеется:
Консольное приложениеЕсть цикл, в нем по очереди вызываются 3 метода класса
Изучаю тему наследования по практикуму учебника 2010 годаТам есть пример, который я взял для изучения вопроса наследования, где используется...