【发布时间】:2018-04-22 09:07:09
【问题描述】:
我有一个类List,它是一个固定大小的链表,在该类内部还有另一个类ListIterator,它指向该List 的特定元素。我的问题是我不熟悉的 c++ 语法,来自 gcc 的构建错误对我没有帮助。
template<class T, int length>
class List {
public:
//some stuff here
//Row-struct
template<class T>
class ListIterator {
public:
ListIterator(int mPos, Row& mRow){pos = mPos; row = mRow;};
T& operator *();
private:
int pos;
Row& row;
};
typedef ListIterator<T> iterator;
iterator begin();
private:
int startIdx;
Row storage[length];
};
template<class T, int length>
ListIterator List<T, length>::begin() {
ListIterator *itor = new ListIterator(startIdx, storage[startIdx]);
return itor;
}
我收到以下错误:
错误:阴影模板参数 'class T'
- 如何使
typedef ListIterator<T>工作? - 如何将与
List相同的T用于迭代器? - 为什么我的
begin()不起作用?
【问题讨论】:
-
你什么都不用做,用就行,在这个范围内是已知的。
-
但我想在
ListIterator和List中使用ìterator作为typedef -
class ListIteratorinsidetemplate <typename T> class List可以访问T,它不需要是模板。您甚至可以直接将其命名为class iterator并跳过 typedef
标签: c++ linked-list iterator