Я пытаюсь создать поток с использованием std::async
, но продолжаю получать ошибку " нет функции согласования для вызова «async(std::launch, <unresolved overloaded function type>, std::string&)
»»на линии«нет подходящей функции для вызова« async »(std :: launch, <неразрешенный перегруженный тип функции>, std :: string &) '"
ConnectFuture = std::async(std::launch::async, Connect_T,ip);
Здесь пока код, который производит такое поведение:
#include <future>
class libWrapper
{
public:
void Connect(std::string ip);
void Connect_T(std::string ip);
private:
std::future<void> ConnectFuture;
};
void libWrapper::Connect(std::string ip){
auto status = ConnectFuture.wait_for(std::chrono::seconds(0));
if (status != std::future_status::timeout)
{
ConnectFuture = std::async(std::launch::async, Connect_T,ip);
}
}
void libWrapper::Connect_T(std::string ip)
{
}
int main(int argc, char** argv) {
libWrapper lW;
lW.Connect("192.168.3.1");
return 0;
}
Вы действительно получаете '<неразрешенный перегруженный тип функции>'? Я получаю ссылку на нестационарную функцию-член, которая должна быть вызвана из clang и 'недопустимое использование нестатической функции-члена' из gcc, что имеет смысл. – Barry
да, вот мой вызов компилятора: g ++ -O0 -g3 -Wall -c -fmessage-length = 0 -std = C++ 11 -MMD -MP -MF "src/test2.d" -MT "src/test2.d "-o" src/test2.o "" ../src/test2.cpp " –