Добрый день, господа,
потому что, похоже, мой не будет таким хорошим.
У меня есть класс C, который не имеет дочерних элементов, но имеет вектор из указателей на экземпляры другого класса, назовем его B:
class C
{
public:
...
std::vector<B*> elements;
...
}
B также имеет вектор указателей на экземпляры другого класса, назовем его A:
class B
{
public:
...
std::vector<A*> elements2;
...
}
C имеет метод, который перебирает элементы элементов и elements2 и работает так:
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
}
}
Но компилятор (g ++) постоянно говорит мне, что нет совпадения для оператора! = In (иерархия классов).
Кто-нибудь знает, что я сделал не так? Другие операторы вроде '<' тоже не работают. </p>
Я не новичок, но я впервые использую итераторы в C ++ (бывший программист Python), и я не могу понять, что не так с моим кодом.
Заранее спасибо за помощь, я теряю волосы из-за этого!
Редактировать: я добавляю всю ошибку для справки. Я отредактировал это, чтобы соответствовать вопросу, я надеюсь, что я ничего не испортил:
нет совпадения для 'operator! =' В 'it1! = ((C *) this) -> C :: elements.std :: vector <_Tp, _Alloc> :: заканчивается _Tp = B *, _Alloc = станд :: распределитель '