Dire que j'ai le code suivant:Type de iterator pour la gamme basée sur boucle
std::vector<std::string> foo({"alice", "bob"});
for (const std::string &f : foo)
std::cout << f.size() << std::endl;
si je fais une erreur et de changer f.size()
à f->size()
, je reçois l'erreur suivante de GCC:
error: base operand of ‘->’ has non-pointer type ‘const string {aka const std::basic_string}
Pourquoi le type actuel est-il const std::basic_string<char>
plutôt que const std::basic_string<char> &
(référence)?
Ce que vous conduit à penser que ce n'est pas 'const std :: basic_string &'? –
juanchopanza
le message du compilateur un peu cryptique probablement .. – stijn
Qu'est-ce que cela a à voir avec les itérateurs? Parce que 'f' n'est pas un itérateur. –