Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/138.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 继承具有内部类的模板类,并在继承的类中访问内部类_C++_Templates_Inheritance - Fatal编程技术网

C++ 继承具有内部类的模板类,并在继承的类中访问内部类

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

我有一个模板类“BinaryHeap”,它本身也声明了一个公共类“Item”

现在,我想用散列扩展BinaryHeap以进行元素查找,从而继承它。我称之为“HashedBinaryHeap”,它应该使用与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);
    ...
};
我得到:

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