std::thread 在引用它的已删除复制构造函数的构造函数中?

std::thread in constructor referencing it's deleted copy constructor?

我在编写构造函数时遇到了很多麻烦。这是非常基本的东西,但我今天过得很糟糕,因为我完全被难住了。

class RenderThread {
public:
    RenderThread(std::thread && threadToGive) 
        : m_renderThread(threadToGive) {}

private:
    std::thread m_renderThread;
};


int test() {
    std::thread thread;
    RenderThread rt(std::move(thread));
}

我的构造函数正在尝试调用 std::thread::thread(const std::thread &),这绝对不是我的目标,即使它是可能的。我想将参数 threadToGive 移动到 m_renderThread,而不是复制它。我在这里做错了什么?

您必须 std::move() RenderThread 构造函数的参数到 m_renderThread 成员的构造函数中:

   : m_renderThread(std::move(threadToGive)) {}