我有以下几点:有问题的std :: multimap中
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;
我试图做到以下几点:
my_multimap my_map;
my_map.insert(my_pair(One, MyClass(5)));
而且我得到一个未处理的异常结果,应用程序试图读取0xfeeefeee等
发生了什么事?我怎样才能解决这个问题? 请注意,这是我正在处理的简化案例;
您不必为“禁止”默认的构造函数,因为提供了一个手写的构造有效地防止编译器生成一个默认的。通过这样做,您可以暴露自己实际上在没有实现后面使用默认构造函数(来自您的班级或朋友)。 – 2009-10-05 12:16:56