我有以下幾點:有問題的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