这是一个演示类。我不希望我的类被复制,所以我删除了复制构造函数。我想vector.emplace_back使用这个构造函数'MyClass(Type type)'。但是这些代码不会编译。为什么?C++ vector emplace_back调用复制构造函数
class MyClass
{
public:
typedef enum
{
e1,
e2
} Type;
private:
Type _type;
MyClass(const MyClass& other) = delete; // no copy
public:
MyClass(): _type(e1) {};
MyClass(Type type): _type(type) { /* the constructor I wanted. */ };
};
std::vector<MyClass> list;
list.emplace_back(MyClass::e1);
list.emplace_back(MyClass::e2);
要解决该问题,请添加默认的移动构造函数。如果你不想移动,那么你的选择更有限 –
谢谢,我选择写一个移动构造函数。 – wqyfavor