Недавно я начал использовать boost :: thread (также пытался с потоком STL) для создания чата. я сделал на мою «серверной станции» класс, который имеетC++ создание потока внутри класса дает c2064
- недействительных функции, которые получают звонки от main.cpp, которые, начиная с прослушиванием сервера + связывания
- недействительной функции, которая является потоком, который вызывается из функция я сказал перед тем
Код:
this is ServerSocket.cpp file
void ServerSocket::startHosting()
{
Bind();
Listen();
boost::thread clients_listener = boost::thread(&ServerSocket::clientsListener);
}
//This is the thread function
void ServerSocket::clientsListener()
{
..... handling incoming clients sockets , code goes here ....
}
В создающем потоке части я добавил «это», потому что я читал на StackOverflow, что в NO -статическая функция-член должна иметь «этот» элемент, который представляет класс. Но когда я добавил, что у меня была другая ошибка, но на этот раз 1 значение вместо 0, когда «это» не указано
Ошибка C2064 - термин делает не оценивать до функции, принимающей 1 аргумент
Кто-нибудь знает, как это решить и объяснить мне ответ, пожалуйста? я могу сделать статическую функцию, но это требует от меня, чтобы сделать все другие элементы, которые мне нужно в этой функции как статические, чтобы и я не хочу делать что
'boost :: thread (boost :: bind (& ServerSocket :: clientsListener, this));' (обратите внимание, не проверено, но если история научила меня чему-нибудь ...). Не уверен, что вы планируете делать с этим объектом, когда вы его создаете, а затем сразу же уничтожаете его при закрытии 'startHosting()'. – WhozCraig
Не работает также ... – IdoM
Вы имеете в виду, вы пробовали это: boost :: thread clients_listener = boost :: thread (& ServerSocket :: clientsListener, this); И это не удается? – sajas