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)) {}
我在编写构造函数时遇到了很多麻烦。这是非常基本的东西,但我今天过得很糟糕,因为我完全被难住了。
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)) {}