std :: multimap的问题

Mac*_*iek 1 c++

我有以下内容:

enum Type 
{ One = 0, Two};

class MySubClass
{
private:
MySubClass(); // prohibited
MySubClass(const MySubClass&); // prohibited
MySubClass & operator (const MySubClass&); // prohibited
public :
MySubClass(int x);
};

class MyClass 
{
MyClass(int x) : m_x(new SubClass(x)) 
{}
~MyClass() 
{ delete m_x; }
private :
MySubClass * m_x;
};

typedef multimap<Type, MyClass> my_multimap;
typedef pair<Type, MyClass> my_pair;
Run Code Online (Sandbox Code Playgroud)

我正在尝试执行以下操作:

my_multimap my_map;
my_map.insert(my_pair(One, MyClass(5)));
Run Code Online (Sandbox Code Playgroud)

我得到一个未处理的异常结果,该应用程序正在尝试读取0xfeeefeee等.

这是怎么回事?我怎样才能解决这个问题?请注意,这是我正在处理的简化案例;

sbi*_*sbi 5

有一个经验法则,称为" 三个规则 ":每当你有一个析构函数或赋值运算符或一个复制构造函数时,你很可能需要它们全部三个.您的代码也不例外.

想想复制类型对象时会发生什么.这个

MyClass obj1;
MyClass obj2(obj1);
Run Code Online (Sandbox Code Playgroud)

代码也会崩溃.