【发布时间】:2013-11-11 02:22:30
【问题描述】:
在 g++ List.cc:19:1: error: âIteratorâ does not name a type
when .标题如下
class List {
private:
class Element {
public:
char data;
Element *next;
Element *prev;
Element(Element *n,Element *p, char d);
};
Element *first;
public:
class Iterator {
public:
Iterator();
void operator++();
void operator--();
char& operator*();
const char& operator*() const;
bool operator==(const Iterator& itr);
bool operator!=(const Iterator& itr);
private:
Iterator(const Element& ele);
Iterator *it;
};
List();
~List();
Iterator& begin() const;
Iterator& end() const;
void insert(Iterator itr, char c);
void erase(Iterator itr);
};
第 19 行是:
Iterator& List::begin() const
这是继承问题吗?我试图在主函数中调用迭代器,就像通过 List::Iterator 调用 std::list
【问题讨论】:
-
好吧,它不是... C 是一个虽然...的成员...
-
B是A的朋友,这意味着它可以访问该类的私有/受保护数据成员。这并不意味着它本身与A分开,例如C。 -
"Resembles"、"Along the lines of" 不是开始提问的好方法。准确。将内容复制/粘贴到问题中。显示错误点和所有类型。
-
好的,所以我把class B的定义移到class A里面,去掉friend关键字。现在它告诉我 B 类没有命名类型...
-
不行,因为
Iterator是一个内部类,所以必须像List::Iterator这样使用。
标签: c++ class friend nested-class