Форум за въпроси

Грешка в имплементацията на итераторите на свързан и двусвързан списък

Грешка в имплементацията на итераторите на свързан и двусвързан списък

от Радослав Георгиев -
Number of replies: 1

Здравейте,

Открих грешка в предефиницията на постфиксния оператор за декрементиране (T operator--(int)) за класовете LinkedListIterator и DoubleLinkedListIterator от лекцията за списъци. Например, за вторият клас имплементацията е следната:

	// it--
DoubleLinkedListIterator<T> operator--(int) {
DoubleListElement<T>* oldptr = ptr;
++(*this);
return oldptr;
}

В случая ++(*this); не трябва ли да е --(*this); ?

P.S.  Освен това би било по-логично член-данните на тези класове да са protected, за да може да се достъпват директно от наследяващи класове.

In reply to Радослав Георгиев

Re: Грешка в имплементацията на итераторите на свързан и двусвързан списък

от Трифон Трифонов -

Благодаря ти, Радослав, нанесох корекцията в GitHub. Получаваш 2 точки бонус от лекции.

Проблемът е само в класа DoubleLinkedListIterator, в LinkedListIterator няма operator-- въобще.

Член-данните не са protected, понеже не са предвидени да бъдат наследявани. Тук е по-скоро въпрос на стил, аз следвам принципа, че слагам възможно най-ограничаващия достъп докато не ми се наложи да го повиша.