gpt4 book ai didi

c++ - 如何在成员函数内将函数及其参数传递给 std::async

转载 作者:行者123 更新时间:2023-11-28 01:19:04 26 4
gpt4 key购买 nike

<分区>

我试图通过以下方式在成员函数中使用 std::async:

#include <iostream>
#include <vector>
#include <string>
#include <future>

using namespace std;

class splitter
{
public:
splitter() = default;
virtual ~splitter() = default;
bool execute(vector<string> &vstr);
bool split_files(vector<string> &vstr);
};

bool splitter::split_files(vector<string> &vstr)
{
for(auto & file : vstr)
{
// do something
cout << file << endl;
}
return true;
}

bool splitter::execute(vector<string> &vstr)
{
auto fut = std::async(std::launch::async, split_files, vstr);
bool good = fut.get();
return good;
}

int main()
{
vector<string> filenames {
"file1.txt",
"file2.txt",
"file3.txt"
};

splitter split;
split.execute(filenames);

return 0;
}

我想在一个成员函数中使用 std::async 来在一个单独的线程中执行另一个成员函数,它接受一个字符串 vector 作为参数。
使用 gcc (9.1) 编译时出现以下错误:

..\cpp\tests\threads\async1\main.cpp|29|error: no matching function 
for call to
'async(std::launch, <unresolved overloaded function type>,
std::vector<std::__cxx11::basic_string<char> >&)'|

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com