Question à propos des accesseurs constants et des std::map
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:
1 2
|
std::map<std::string, Object> objectsList; |
En fait, ce code provoque une erreur (no operator "[]" matches these operands):
Code:
1 2 3 4 5
|
const Object& MaClasse::getObject(std::string _name) const
{
return objectsList[_name];
} |
alors que celui-ci compile bien:
Code:
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 !