J'ai un problème avec ce qui semble être une sorte de distribution implicite vers const lorsque j'utilise des itérateurs. Je ne suis pas vraiment sûr quel code est pertinent (si je l'ai fait je ne serais probablement pas poser cette question!) Alors je vais essayer de mon mieux pour illustrer mon problème.Les itérateurs STL et 'const'
typedef set<SmallObject> Container; //not const
void LargeObject::someFunction() { //not const
Container::iterator it; //not const
for (it = c.begin(); it != c.end(); ++it) { //assume c is a "Container"
(*it).smallObjectFunction(); //not a const function
}
}
Cependant je reçois toujours l'erreur suivante:
error: passing 'const SmallObject' as 'this' argument of 'int SmallObject::smallObjectFunction()' discards qualifiers
Cependant, si je jetais comme ((SmallObject)(*it).smallObjectFunction();
puis-je me débarrasser du message d'erreur.
La seule chose que je peux comprendre est que en quelque sorte la définition de
bool operator< (const SmallObject &a) const;
est en quelque sorte l'origine du iterator de retourner des objets const. Toute aide ou explication ici?
Pourriez-vous publier l'implémentation de 'SmallObject'? – ULysses