gpt4 book ai didi

c++ - 线程(尝试使用已删除的函数

转载 作者:太空狗 更新时间:2023-10-29 23:14:46 24 4
gpt4 key购买 nike

我正在学习有关线程的在线教程并收到错误消息“语义问题:尝试使用已删除的函数”。知道出了什么问题吗?

#include <iostream>
#include <thread>
#include <string>

using namespace std;

class Fctor {
public:
void operator() (string & msg) {
cout << "t1 says: " << msg << endl;
msg = "msg updated";
}
};


int main(int argc, const char * argv[]) {

string s = "testing string " ;
thread t1( (Fctor()), s);

t1.join();

return 0;
}

最佳答案

好吧,代码适用于 VS2015,MS-Compiler,对代码进行了以下更改:

这个

void operator() (string & msg) {
cout << "t1 says: " << msg << endl;
msg = "msg updated";
}

void operator() (std::string& msg) {
std::cout << "t1 says: " << msg.c_str() << std::endl;
msg = "msg updated";
}

还有这个

string s = "testing string " ;
thread t1( (Fctor()), s);

std::string s = "testing string ";
Fctor f;
std::thread t1(f, s);

我更改的两个主要内容是 msg.c_str(),因为流不采用字符串,而是 const char*。其次,我将 RValue Fctor() 转换为 LValue Fctor f 并将 f 作为参数,线程显然不接受 RValues。

关于c++ - 线程(尝试使用已删除的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32171954/

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