C++ 继承具有内部类的模板类,并在继承的类中访问内部类
我有一个模板类“BinaryHeap”,它本身也声明了一个公共类“Item” 现在,我想用散列扩展BinaryHeap以进行元素查找,从而继承它。我称之为“HashedBinaryHeap”,它应该使用与BinaryHeap相同的项类 存根如下所示:C++ 继承具有内部类的模板类,并在继承的类中访问内部类,c++,templates,inheritance,C++,Templates,Inheritance,我有一个模板类“BinaryHeap”,它本身也声明了一个公共类“Item” 现在,我想用散列扩展BinaryHeap以进行元素查找,从而继承它。我称之为“HashedBinaryHeap”,它应该使用与BinaryHeap相同的项类 存根如下所示: template<class T> class BinaryHeap { public: class Item {...}; ... void appendItem(const Item & 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);
...
};
我得到:
ISO C++ forbids declaration of 'Item' with no type
expected unqualified-id before '&' token
当我执行以下操作之一时:
void appendItem(const HashedBinaryHeap::Item & item);
void appendItem(const HashedBinaryHeap<T>::Item & item);
那么,如何“访问”HashedBinaryHeap中的类项呢?我误解了什么
(也许这不是模板类相关问题,但我知道模板类混淆了很多C++初学者,我还是不敢自称别的东西…请把我弄出来。) 提前谢谢
好了,解决了void appendItem(const typename HashedBinaryHeap<T>::Item & item);
void appendItem(const typename HashedBinaryHeap::Item&Item);
这就成功了-我不知道typename BinaryHeap::Item还是typename BinaryHeap::Item?你的确切意思是什么?我尝试将
typedef-typename-BinaryHeap::Item Item
放在声明顶部,但它没有编译:typename-BinaryHeap::Item不是模板
void-appendItem(const-typename-BinaryHeap::Item&Item);正在为mevoid appendItem(const typename HashedBinaryHeap::Item和Item)工作;我也很好谢谢你,真是太棒了。
void appendItem(const typename HashedBinaryHeap<T>::Item & item);