Я реализую свой собственный связанный список в C ++.Приведенный ниже код предназначен для части итератора связанного списка.
class Iterator
{
public:
virtual bool operator== (const Iterator &rhs) const = 0;
};
class LinkedListIterator : public Iterator
{
public:
int fieldOnlyLinkedListIteratorHas;
bool operator== (const Iterator &rhs) const
{
return fieldOnlyLinkedListIteratorHas == rhs.fieldOnlyLinkedListIteratorHas;
}
};
Я хочу иметь интерфейс Iterator
с некоторыми распространенными методами, которые могут быть реализованы многими (будущими) итераторами.
Из кода, как вы можете догадаться, переменная rhs
не имеет этого поля, поэтому код не будет компилироваться.Но что я должен изменить это?Этот код также не работает:
bool operator== (const Iterator &rhs) const
{
LinkedListIterator &rhs2 = (LinkedListIterator)rhs;
return fieldOnlyLinkedListIteratorHas == rhs2.fieldOnlyLinkedListIteratorHas;
}
Так же не работает:
bool operator== (const LinkedListIterator &rhs) const
{
return fieldOnlyLinkedListIteratorHas == rhs.fieldOnlyLinkedListIteratorHas;
}
С тех пор класс LinkedListIterator
является абстрактным.
Чтобы решить эту проблему вЯ бы использовал instanceof
но как это сделать на С ++?