加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 继承具有内部类的模板类,并访问继承类中的内部类

发布时间:2020-12-16 06:56:20 所属栏目:百科 来源:网络整理
导读:我有一个模板类“BinaryHeap”,它本身也声明了一个公共类“Item”. 现在我想用一个哈希来扩展BinaryHeap以进行元素查找,从而继承它.我称之为“HashedBinaryHeap”,它应该像BinaryHeap一样使用相同的Item类. 存根看起来像这样: templateclass Tclass BinaryH
我有一个模板类“BinaryHeap”,它本身也声明了一个公共类“Item”.

现在我想用一个哈希来扩展BinaryHeap以进行元素查找,从而继承它.我称之为“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);
    ...
};

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

当我像上面或与< T>一样写的时候:

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 …

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读