Я пытаюсь определить перегрузку для оператора! =.Мой код выглядит следующим образом. (Обновление: устаревший код. Если один из двух указателей статьи указывает на NULL, этот код будет аварийно завершен.)
bool ArticleContainer::ArticleIterator::operator!=(const ArticleIterator& artit) {
if (this->article == NULL && artit.article == NULL)
return false;
else if (this->article->GetID() != artit.article->GetID())
return true;
else if (this->article->GetName() != artit.article->GetName())
return true;
else
return false;
}
Когда я ставлю точку останова на ее первую строку кода, явидел это в отладчике.
this - 0x22fedc
artit - Невозможно создать переменный объект
Видимо, функция не может получить доступ artit
, так что вылетает.Что я делаю не так?
Редактировать : здесь происходит звонок.
for (ArticleContainer::ArticleIterator art = cont.Begin(); art != cont.End(); art++) {
cout << art << "\n";
}
По сути, я хожу по списку статей, пока не сталкиваюсь со стражем.
Я только что проверил cont.End()
прямо перед циклом for:
const ArticleIterator& End() const { return *tail; }
С хвостом :
Name : tail
Details:0x571900
Редактировать : код оператора ++ выглядит следующим образом:
void ArticleContainer::ArticleIterator::operator++(int i) {
this->article = this->next->article;
this->next = this->next->next;
}