Bonjour à tous,

Voilà, j'ai un petit problème de compréhension au niveau d'un de accesseurs de ma classe personnalisée...

Tout d'abord, voici la déclaration de la std::map

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
std::map<std::string, Object> objectsList;

En fait, ce code provoque une erreur (no operator "[]" matches these operands):

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
const Object& MaClasse::getObject(std::string _name) const
{
	return objectsList[_name];
}
alors que celui-ci compile bien:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
const Object& MaClasse::getObject(std::string _name) const
{
	return objectsList.at(_name);
}
La différence se situe donc au niveau du at/ des "[]".

Je ne comprends pas pourquoi ça ne fonctionne pas dans le premier cas, les deux sont censées être équivalents, non ?

Merci pour vos réponses !