C ++中的嵌套类不起作用

时间:2013-11-22 21:30:19

标签: c++ list class templates

我正在尝试建立一个列表。 当我试图到达“Iterator”类中的字段“node”时,我的问题出现了。

#include <iostream>
using namespace std;

template<typename T>
class List{

  class Node;
  Node* head;
  Node* first;
  int size;

public:
   class Iterator;
   List(): head(new Node), first(new Node), size(0){};
   void insertFirst(T& element);
   void insertFirst(T element);
   int getSize();
   Iterator& begin();
};

template<class T>
class Iterator{
   friend class List<T>;
   typename List<T>::Node* node;
   List<T>* list;

 public:
   Iterator(List<T> src):node(NULL), list(&src){}
 };

 template<class T>
 typename List<T>::Iterator& List<T>::begin(){
     Iterator it(*this);
     it.node=first; <--- ***right here***
     return it;
 }

我收到“Field'节点'无法解析”。

我不知道我的代码有什么问题。

如果有人可以提供帮助,我将非常感谢。

1 个答案:

答案 0 :(得分:0)

声明类型typename List<T>::Iterator但未定义。您定义了一个完全独立的类型,名称有点类似。你可能想写

template <typename T>
class List<T>::Iterator {
    // ...
};