不是模板类

时间:2016-06-26 10:50:26

标签: c++ class templates

我正在尝试创建两个类:lista和iterator。 Iterator将成为class lista的朋友。问题是,当我声明类迭代器时,我得到了这个错误:迭代器不是模板类。 这是两个file.h

lista .h:

*#include "nodo.h"*

template <class T>

class lista{

public :

    //all the function

private :
    nodo<T> *list;
    nodo<T> *tail;
    int n;


    friend class iterator<T>;


};

iterator.h:

*#include "lista.h"*

template<class Z>

class iterator {

public :

    lista<Z> a;
    iterator();
};

2 个答案:

答案 0 :(得分:0)

您需要转发声明Box<Foo>,以便iterator<T>知道它存在。

lista<T>

虽然没有必要,但我建议将// Forward declaration of iterator<T> template <class T> class iterator; template <class T> class lista { ... friend class iterator<T>; }; 的迭代器实现为lista的内部类。对于随意的读者来说,显而易见的是,迭代器是作为包含类的迭代器。

答案 1 :(得分:-1)

C ++标准库已经使用了名称iterator,因此请尽量避免在代码中使用它来命名变量和类型。