我想在该类中禁用move构造函数。除了 move ,我想基于复制构造函数。当我尝试编写此代码时:

class Boo
{
public:
    Boo(){}
    Boo(const Boo& boo) {};
    Boo(Boo&& boo) = delete;
};

Boo TakeBoo()
{
    Boo b;
    return b;
}

在编译过程中,我收到错误消息:



如何禁用move构造函数并强制复制?

最佳答案

不要创建任何move构造函数:

class Boo
{
public:
    Boo(){}
    Boo(const Boo& boo) {};
};

只要存在用户定义的复制构造函数,就不会自动生成move构造函数,因此将调用复制构造函数。

关于c++ - 禁用move构造函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35405771/

10-12 23:35