使用内部类继承模板类,并访问继承类中的内部类
Inherit a template class with an inner class and access the inner class within the inherited class
我有一个模板类"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);
这起到了作用 - 我不知道类型名称...
相关文章:
- 在设计 SDK 时,我是否应该在 C++ 头文件中完全隐藏内部类?
- 如何声明由多个线程调用的 C++ DLL 的内部类,而无需导出类
- C++从外部类继承的嵌套类;不允许使用不完整的类型
- 从内部类继承
- 如何将枚举类转发声明为模板化类的内部类?
- 从内部类中的方法从包含类调用方法
- 从模板化父类中的派生内部类访问受保护的成员变量
- C++模板类的内部类访问
- 使用类模板的内部类模板专用化模板
- 如何使用包含内部类的类实例有效地从内部类访问成员?
- C++ 如何在外部类中声明的内部类中使用变量
- 在C++中将内部类实现为具有名称空间的独立类有什么好处
- 参数化类的别名(或类型定义)内部类
- 从内部类的析构函数调用虚拟函数
- 如何在没有setter的情况下设置类内部类的成员变量?
- 具有相同名称的方法和内部类(错误:.. 与前面的声明冲突)
- 内部类私有成员访问和封闭的友好性
- 生成文件 - 继承的类和内部类
- 使用内部类继承模板类,并访问继承类中的内部类
- 从具有私有内部类的类继承