使用内部类继承模板类,并访问继承类中的内部类

Inherit a template class with an inner class and access the inner class within the inherited class

本文关键字:内部类 继承 访问      更新时间:2023-10-16

我有一个模板类"BinaryHeap",它也在自身中声明了一个公共类"Item"。

现在我想用元素查找的哈希来扩展二进制堆,因此继承了它。我称之为"HashedBinaryHeap",它应该像BinaryHeap一样使用相同的Item类。

存根如下所示:

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);
    ...
};

现在的问题是,当我尝试像在 appendItem() 方法中那样访问 HashedBinaryHeap 中的 Item 类时,我遇到了一些编译器错误。

当我像上面或用 这样写时:

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

那么如何"访问"HashedBinaryHeap中的类项呢?我误解了什么?

(也许这不是模板类相关的问题,但我知道模板类让很多C++初学者感到困惑,我仍然不敢称自己为其他东西......请给我出去。:))

提前感谢!

好的,解决了!

void appendItem(const typename HashedBinaryHeap<T>::Item & item);

这起到了作用 - 我不知道类型名称...