c++ - 继承一个带有内部类的模板类,并在继承类中访问内部类

标签 c++ templates inheritance

我有一个模板类“BinaryHeap”,它还在自身内部声明了一个公共(public)类“Item”。

现在我想用用于元素查找的散列扩展 BinaryHeap,因此继承了它。我将其称为“HashedBinaryHeap”,它应该使用与 BinaryHeap 相同的 Item 类。

stub 看起来像这样:

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 中的类 Item?我误会了什么?

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

提前致谢!

最佳答案

好的,解决了!

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

这成功了——我不知道 typename...

关于c++ - 继承一个带有内部类的模板类,并在继承类中访问内部类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5930711/

相关文章:

c++ - 使用 Variadic 模板的困难

c++ - QML ScrollView 与 ColumnLayout

c++ - 用于选择 vector/集合元素的位掩码?

c++ - 使用 C++ 特化模板时的奇怪行为

php - PHP 与 DWT 的争论

c++ - 如何使子类与 C++ 中的父类互换?

c# - unity3d 中用于继承类的 CustomPropertyDrawer

ios - 一个类继承另一个类并遵守一个协议(protocol)——试图调和两个​​接口(interface)

c++ - 有没有一种方法可以衡量应用程序/程序占用了多少系统资源(例如 RAM)

c++ - 如何通过输入文件读取 CHAR(字母代码)作为金额