C++ 错误:";尝试使用已删除的函数";在提出承诺时

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

我正试图写一个有前途的例子。在中的示例中,他们这样做了,并且在他们的在线编译器中工作得很好。当我在我的Mac上做这件事时(下面是源代码),它会抛出这个错误,表明没有移动操作符。有人能告诉我怎么了吗

头文件:

#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
例如,当您尝试传递两个参数(字符串和承诺)时,只接受一个参数。可能是错误消息是红色的铃声。研究一下你链接的页面上的函数原型,并将它们与你的进行比较。犯了一个愚蠢的错误。谢谢大家!我没有注意到。谢谢!