J'ai les suivantes:problème avec 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;
Je suis en train de faire ce qui suit:
my_multimap my_map;
my_map.insert(my_pair(One, MyClass(5)));
Et je reçois un résultat d'exception non gérée, la l'application essaye de lire 0xfeeefeee etc.
Que se passe-t-il? Comment puis-je réparer cela? S'il vous plaît noter que ceci est un cas simplifié de ce que j'ai affaire;
Vous n'avez pas besoin d '«interdire» le constructeur par défaut, car fournir un constructeur écrit à la main empêche efficacement le compilateur de générer un constructeur par défaut. Ce faisant, vous vous exposez à utiliser réellement le constructeur par défaut (de votre classe ou de vos amis) lorsqu'il n'y a pas d'implémentation derrière. –