Нет подходящего конструктора для std :: thread mac osx mojave g ++ boost 1.68

Я прочитал каждый пост об этой проблеме и не мог найти решение этой ошибки компиляции.
Я использую Mac OSX Mojave, используя clion с компилятором g ++ и boost 1.68.

    #include "../include/Client.h"#include <thread>int main (int argc, char **argv) {
if (argc < 3) {
std::cerr << "Usage: " << argv[0] << " host port" << std::endl << std::endl;
return -1;
}
std::string host = argv[1];
short port = atoi(argv[2]);

Client client(host, port);

if (!client.getConnectionHandler().connect()) {
std::cerr << "Cannot connect to " << host << ":" << port << std::endl;
return 1;
}

std::thread thFromUser (&Client::userReader, &client);
std::thread thFromServer (&Client::serverReader, &client);
thFromUser.join();
thFromServer.join();

if (client.isTerminated()) {
client.getConnectionHandler().close();
}

return 0;
}

Класс клиента:

#include "../include/Client.h"#include <thread>
#include <boost/asio.hpp>

Client::Client(std::string host, short port) : _connectionHandler(host, port), _shouldTerminate(false), _messageEncDec(), _bufsize(1024), _message("") {
_buf[_bufsize];
}

void Client::userReader() {
while (!this->_shouldTerminate) {
std::cin.getline(_buf, _bufsize);
std::string line(_buf);
_message = _messageEncDec.encode(line);
int len(_message.length());

if (!_connectionHandler.sendLine(_message)) {
std::cout << "Disconnected. Exiting...\n" << std::endl;
this->_shouldTerminate = true;
break;
}
std::cout << "Sent " << len + 1 << " bytes to server" << std::endl;
}
}

void Client::serverReader() {
while (!this->_shouldTerminate) {
std::string answerFromServer;

while (!_connectionHandler.getLine(answerFromServer)) {} // blocking until answer from server is received
_message = _messageEncDec.decodeNextByte(answerFromServer);
std::cout << _message << std::endl;
}
}

ConnectionHandler& Client::getConnectionHandler() {
return this->_connectionHandler;
}

bool Client::isTerminated() {
return this->_shouldTerminate;
}

CmakeList:

cmake_minimum_required(VERSION 3.13)

project(Client)

message(STATUS "start running cmake...")

find_package(Boost 1.68.0 COMPONENTS system filesystem REQUIRED)

if(Boost_FOUND)

message(STATUS "Boost_INCLUDE_DIRS: ${Boost_INCLUDE_DIRS}")
message(STATUS "Boost_LIBRARIES: ${Boost_LIBRARIES}")
message(STATUS "Boost_VERSION: ${Boost_VERSION}")

include_directories(${Boost_INCLUDE_DIRS})

endif()

add_executable(Client src/connectionHandler.cpp src/MessageEncDec.cpp include/MessageEncDec.h src/Client.cpp include/Client.h src/Run.cpp)if(Boost_FOUND)
target_link_libraries(Client ${Boost_LIBRARIES})endif()

IF(NOT APPLE AND NOT MSVC)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread")
ENDIF()

Я получаю ошибку компиляции в этих двух строках:

   std::thread thFromUser (&Client::userReader, &client);
std::thread thFromServer (&Client::serverReader, &client);

Нет подходящего конструктора для инициализации std :: thread.
Вот полная информация о сборке:

====================[ Build | Client | Debug ]==================================
/Applications/CLion.app/Contents/bin/cmake/mac/bin/cmake --build /Users/avishaiyaniv/CLionProjects/SPL3_Client/cmake-build-debug --target Client -- -j 4
Scanning dependencies of target Client
[ 40%] Building CXX object CMakeFiles/Client.dir/src/Run.cpp.o
[ 40%] Building CXX object CMakeFiles/Client.dir/src/Client.cpp.o
/Users/avishaiyaniv/CLionProjects/SPL3_Client/src/Client.cpp:9:18: warning: expression result unused [-Wunused-value]
_buf[_bufsize];
~~~~ ~~~~~~~~^
/Users/avishaiyaniv/CLionProjects/SPL3_Client/src/Run.cpp:24:17: error: no matching constructor for initialization of 'std::thread'
std::thread thFromUser (&Client::userReader, &client);
^           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/thread:408:9: note: candidate constructor template not viable: requires single argument '__f', but 2 arguments were provided
thread::thread(_Fp __f)
^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/thread:289:5: note: candidate constructor not viable: requires 1 argument, but 2 were provided
thread(const thread&);
^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/thread:296:5: note: candidate constructor not viable: requires 0 arguments, but 2 were provided
thread() _NOEXCEPT : __t_(_LIBCPP_NULL_THREAD) {}
^
/Users/avishaiyaniv/CLionProjects/SPL3_Client/src/Run.cpp:25:17: error: no matching constructor for initialization of 'std::thread'
std::thread thFromServer (&Client::serverReader, &client);
^             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/thread:408:9: note: candidate constructor template not viable: requires single argument '__f', but 2 arguments were provided
thread::thread(_Fp __f)
^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/thread:289:5: note: candidate constructor not viable: requires 1 argument, but 2 were provided
thread(const thread&);
^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/thread:296:5: note: candidate constructor not viable: requires 0 arguments, but 2 were provided
thread() _NOEXCEPT : __t_(_LIBCPP_NULL_THREAD) {}
^
2 errors generated.
make[3]: *** [CMakeFiles/Client.dir/src/Run.cpp.o] Error 1
make[3]: *** Waiting for unfinished jobs....
1 warning generated.
make[2]: *** [CMakeFiles/Client.dir/all] Error 2
make[1]: *** [CMakeFiles/Client.dir/rule] Error 2
make: *** [Client] Error 2

Я действительно понятия не имею, почему это происходит.
заранее спасибо

-1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector