Bonjour,

je ne comprends pas pourquoi avec le code suivant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
	struct Test
	{
		int _a;
		int _b;
		Test(int a, int b) : _a(a), _b(b) {}
	};
 
	Test T(1, 2);
	std::map<int, Test> M;
	M[0] = T;
j'ai l'erreur :
error C2512: 'Test::Test' : no appropriate default constructor available
d:\program files\microsoft visual studio\vc98\include\map(93) : while compiling class-template member function 'struct Test &__thiscall std::map<int,struct Test,struct std::less<int>,class std::allocator<struct Test> >::operator [](const int
Alors que si je redéfinis mon constructeur de struct ainsi :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
	struct Test
	{
		int _a;
		int _b;
		Test(int a=0, int b=0) : _a(a), _b(b) {}
	};
Je n'ai plus de problème.

Pourquoi faut-il absolument un constructeur par défaut ?

Merci par avance.