我正在尝试创建两个类: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();
};
答案 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
,因此请尽量避免在代码中使用它来命名变量和类型。