У меня есть шаблонный класс "BinaryHeap", который также объявляет открытый класс "Item" внутри себя.
Теперь я хочу расширить BinaryHeap хешем для поиска элемента и, следовательно, унаследовать его.Я назвал его «HashedBinaryHeap», который должен использовать тот же класс Item, что и BinaryHeap.
Заглушка выглядит так:
template<class T>
class BinaryHeap {
public:
class Item {...};
...
void appendItem(const Item & item);
...
};
template<class T>
class HashedBinaryHeap : public BinaryHeap<T> {
public:
...
void appendItem(const Item & item);
...
};
Проблема теперь в том, когда я пытаюсь получить доступ кКласс элемента в HashedBinaryHeap, как и в методе appendItem()
, вызывает некоторые ошибки компилятора.
Когда я пишу его, как указано выше, или с :
void appendItem(const Item & item);
void appendItem(const Item<T> & item);
я получаю:
ISO C++ forbids declaration of 'Item' with no type
Когда я выполняю одно из:
void appendItem(const HashedBinaryHeap::Item & item);
void appendItem(const HashedBinaryHeap<T>::Item & item);
, я получаю:
expected unqualified-id before '&' token
Так как же я могу «получить доступ» к классу Item в HashedBinaryHeap?Что я неправильно понимаю?
(Может быть, это не та проблема, связанная с классами шаблонов, но я знаю, что классы шаблонов сбивают с толку многих начинающих C ++, и я все еще не смею называть себя чем-то другим ...Пожалуйста, вытащите меня. :))
Заранее спасибо!