Bon SIRS jour,problème C++ STD opérateurs de comparaison Iterator
parce qu'il ressemble à la mienne ne va pas être bon.
J'ai une classe C, qui n'a pas d'enfant, mais a un vecteur fait de pointeurs vers des instances d'une autre classe, nous allons l'appeler B:
class C
{
public:
...
std::vector<B*> elements;
...
}
B a aussi un vecteur de pointeurs vers cas d'une autre classe, laissez l'appeler un de:
class B
{
public:
...
std::vector<A*> elements2;
...
}
C a une méthode qui itère à travers les éléments des éléments et elements2, et fonctionne comme ceci:
std::vector<B*>::iterator it1;
std::vector<A*>::iterator it2;
for (it1=this->elements.begin(); it1!=this->elements.end(); ++it1)
{
for (it2 = it1->elements2.begin(); it12=it1->elements2.end(); ++it2)
{
it2->do_something(); //method of class A
}
}
Mais le compilateur (g ++) ne cesse de me dire qu'il n'y a pas de correspondance pour l'opérateur! = In (hiérarchie de classes).
Est-ce que quelqu'un sait ce que j'ai fait de mal? D'autres opérateurs comme '<' ne semblent pas fonctionner aussi. Je ne suis pas un novice mais c'est la première fois que j'utilise des itérateurs en C++ (ancien programmeur Python) et je n'arrive pas vraiment à comprendre ce qui ne va pas avec mon code.
Merci pour l'aide d'avance, je suis en train de perdre mes cheveux!
Éditer: J'ajoute l'erreur entière pour référence. Je l'ai édité pour répondre à la question, j'espère que je n'ai rien gâché:
aucune correspondance pour 'opérateur! =' Dans 'it1! = ((C *) this) -> C :: éléments .std :: vecteur < _TP, _Alloc> :: end avec _TP = B *, _Alloc = std :: allocateur »
Ce fut une faute de frappe, je suis désolé. it1 (boucle interne) était bien sûr supposé être it2. Il ne compile toujours pas. Edit: j'obtiens l'erreur du compilateur avant la boucle interne, à la fois sur la boucle externe et sur la boucle interne. – Percival
@Percival: réponse éditée – icecrime
Créer des itérateurs à la fin des vecteurs aurait apparemment bloqué les problèmes de l'opérateur, bien que d'autres aient émergé (de ma faute, probablement). Je me demande quelle en était la cause. Je vais essayer de corriger certaines des autres erreurs. Jusque là, c'est la réponse la plus valable. Merci! Edit: fonctionne parfaitement. Meilleure réponse! – Percival