我正在尝试将 std::future 类的成员移动到同一类的另一个成员。
我需要这样做,因为如果我想调用 std::vector.push_back(MyClass),我需要用一个简单的引用删除复制构造函数并用双引用创建另一个,因为我的类包含一个 std::future 成员。当我移动 std::future 时,G++ 说:
call to deleted constructor of 'std::future<int>'
_future(std::move(p_myclass._future));
note: 'future' has been explicitly marked deleted here
future(const future&) = delete
但对我来说,std::move 返回一个双引用而不是一个单引用。所以我真的不知道这个错误来自哪里。
我尝试了使用双重引用的赋值运算符 = 但也不起作用。
class MyClass
{
private:
std::future<int> _future;
public:
MyClass(const MyClass&) = delete;
MyClass(const MyClass&&);
MyClass& operator=(MyClass &) = delete;
MyClass& operator=(MyClass &&);
};
MyClass::MyClass(const MyClass &&p_myclass) : _future(std::move(p_myclass._future)) {};
MyClass& MyClass::operator=(MyClass &&p_myclass)
{
this->_future = std::move(p_myclass._future);
return (*this);
};
当然我的 std::future 是在主构造函数上初始化的,但是这里不需要粘贴它。两者都不起作用。谢谢指教。