在另一个类中访问模板化的嵌套类函数和对象

时间:2018-07-14 13:53:56

标签: c++

我有两个头文件。

其中一个头文件是 tree.h ,它具有一个模板化的类。它还包含另一类“迭代器”。

 template <typename Key, typename Value>
 class tree
 {
    public:
    class iterator
    {
       public:
       //...
       };
    iterator find(const Key& key) const;
    //....
    };

我还有另一个头文件 forest.h ,其中森林类从tree.h文件继承树类。

 template<typename Key, typename Value>

 class forest : public tree<Key, Value>
 {
    //...
    //iterator find(const Key& k);  // overloading function 
    //iterator it;                  // an object of iterator 
    //...
 }

我需要在林类中实现代码注释部分的帮助,但是,我不知道如何访问树的嵌套类(由于模板)。我尝试使用typename进行操作,但未成功。

1 个答案:

答案 0 :(得分:0)

template <typename Key, typename Value>
class tree
{
public:
    class iterator {};
};

template <typename Key, typename Value>
class forest : public tree<Key, Value>
{
public:
    typedef typename tree<Key, Value>::iterator iterator;

    iterator find(const Key& k);
};

template <typename Key, typename Value>
typename forest<Key, Value>::iterator forest<Key, Value>::find(const Key& k)
{
    iterator it;
    return it;
}

C ++ 11:

template <typename Key, typename Value>
auto forest<Key, Value>::find(const Key& k) -> iterator
{
    return {};
}