C++ 错误:";尝试使用已删除的函数";在提出承诺时
我正试图写一个有前途的例子。在中的示例中,他们这样做了,并且在他们的在线编译器中工作得很好。当我在我的Mac上做这件事时(下面是源代码),它会抛出这个错误,表明没有移动操作符。有人能告诉我怎么了吗 头文件:C++ 错误:";尝试使用已删除的函数";在提出承诺时,c++,xcode,promise,move,future,C++,Xcode,Promise,Move,Future,我正试图写一个有前途的例子。在中的示例中,他们这样做了,并且在他们的在线编译器中工作得很好。当我在我的Mac上做这件事时(下面是源代码),它会抛出这个错误,表明没有移动操作符。有人能告诉我怎么了吗 头文件: #ifndef Demonstration9_hpp #define Demonstration9_hpp #include <iostream> #include <thread> #include <future> using namespace
#ifndef Demonstration9_hpp
#define Demonstration9_hpp
#include <iostream>
#include <thread>
#include <future>
using namespace std;
inline namespace demo9
{
class Demonstration9
{
private:
bool Job1();
void Job2();
public:
void Run();
};
}
#endif /* Demonstration9_hpp */
\ifndef演示9\u水电站
#定义示范9_水电站
#包括
#包括
#包括
使用名称空间std;
内联命名空间demo9
{
课堂示范9
{
私人:
bool-Job1();
无效作业2();
公众:
无效运行();
};
}
#endif/*示范9_水电站*/
源文件:
#include "Demonstration9.hpp"
bool job1(string test_string)
{
this_thread::sleep_for(chrono::milliseconds(500));
return test_string == "test";
}
void job2()
{
this_thread::sleep_for(chrono::milliseconds(500));
}
bool Demonstration9::Run()
{
promise<bool> j1_promise;
future<bool> j1_future = j1_promise.get_future();
thread t1(job1, "test", move(j1_promise));
j1_future.wait(); // wait for result
cout << "result=" << j1_future.get() << '\n';
t1.join(); // wait for thread completion
// Demonstrate using promise<void> to signal state between threads.
promise<void> j2_promise;
future<void> j2_future = j2_promise.get_future();
thread t2(job2, move(j2_promise));
j2_future.wait();
t2.join();
}
#包括“演示9.hpp”
bool作业1(字符串测试\u字符串)
{
此线程::sleep_for(chrono::毫秒(500));
返回test_string==“test”;
}
无效作业2()
{
此线程::sleep_for(chrono::毫秒(500));
}
bool演示9::Run()
{
承诺你的承诺;
future j1_future=j1_promise.get_future();
螺纹t1(作业1,“测试”,移动(j1_));
j1_future.wait();//等待结果
不能
thread t1(job1, "test", move(j1_promise));
正在尝试调用
job1("test", move(j1_promise));
在一个单独的线程中。但是您的job1
只接受一个参数。您应该发布构建日志,DemonstrationInterface.hpp
内容和调用Run()的代码
。可能会简化为mcve。我删除了接口。这对于此代码来说毫无意义。我还添加了日志。感谢您的反馈!您的函数签名不匹配。job1
例如,当您尝试传递两个参数(字符串和承诺)时,只接受一个参数。可能是错误消息是红色的铃声。研究一下你链接的页面上的函数原型,并将它们与你的进行比较。犯了一个愚蠢的错误。谢谢大家!我没有注意到。谢谢!