我想禁用类中的 move 构造函数。我不想 move ,而是基于复制构造函数。当我尝试编写这段代码时:
class Boo
{
public:
Boo(){}
Boo(const Boo& boo) {};
Boo(Boo&& boo) = delete;
};
Boo TakeBoo()
{
Boo b;
return b;
}
在编译期间我收到错误:
error C2280: 'Boo::Boo(Boo &&)': attempting to reference a deleted function
如何禁用 move 构造函数并改为强制复制?
最佳答案
不创建任何 move 构造函数:
class Boo
{
public:
Boo(){}
Boo(const Boo& boo) {};
};
只要存在用户定义的复制构造函数,就不会自动生成 move 构造函数,因此调用复制构造函数。
关于c++ - 禁用 move 构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35405771/