Попытки написать простую многопоточный сервер программу и получил эту ошибку в последнее время:pthread_create аргумент прохождение ошибки
server.cpp: 64: 64: ошибка: аргумент типа «недействительный * (Сервер ::) (недействительный *) 'не соответствует' недействительным * (* ) (аннулируются *)
Вот несколько строк из моего кода:
Заголовок файла:
class Server
{
public:
void establishConnection(const char *);
...
private:
void *listening(void *);
void *acceptingConnection(void *);
pthread_attr_t attrr;
}
CPP файл:
void Server:: establishConnection(const char *port_number)
{
...
pthread_create(&listn, &attrr, Server::listening, (void*)socketfd);//pthread_t listn, socketfd is a socket destricptor(int)
pthread_join(listn, NULL);
}
void* Server::listening(void *arg)
{
int socketfd = (int)arg;
...
}
Обычно, если я определяю нить прототипы функций в CPP файле вместо заголовка файла, он работает правильно (без сервера :: определение, конечно) Пробовал несколько других вещей, как (пустоте *) Сервер :: прослушивание, прослушивание, (void *) прослушивание, но все равно не работало. Не могли бы вы просветить меня? Как передать параметр метода методу прослушивания?
Во-вторых, я изучаю C++ в настоящее время (уже знаю C), верно ли использовать некоторые C-методы, char * массивы вместо строк, заголовочные файлы в C++-программе? Например, string.h, stdlib.h, pthread.h?
Точный дубликат функции [pthread из класса] (http://stackoverflow.com/questions/1151582/pthread-function-from-a-class) –