C++嵌套模板类语法
C++ nested template classes syntax
我有一个类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;
}
我收到以下错误:
错误:阴影模板参数"类 T">
- 如何使此
typedef ListIterator<T>
工作? - 如何使用与迭代器
List
相同的T
? - 为什么我的
begin()
不起作用?
将ListIterator
模板参数T
重命名为其他名称,例如重命名为 TInner
。或者,如果可以使用外部类中的T
,则使其成为常规类。或者ListIterator
移动到类之外List
这将是一个更好的主意,因为ListIterator
实际上并没有做任何特定于列表的事情。
要修复begin
函数,您需要使用正确的类型:
template<typename T, int length> typename List<T, length>::iterator
List<T, length>::begin(void)
{
iterator item_iterator(startIdx, storage[startIdx]);
return(item_iterator);
}
相关文章:
- 嵌套在类中时无法设置成员数据
- 无法访问嵌套类.类的使用无效
- 我正在使用嵌套的while循环来解析具有多行的文本文件,但由于某种原因,它只通过第一行,我不知道为什么
- 如何在C++中初始化嵌套类中的2个memeber
- 单独定义模板化嵌套类方法的正确语法
- 创建模板嵌套类实例的语法?
- 解释通过 lex/flex 实现 C/C++嵌套的"#include "Header""语法?
- 模板化函数语法错误中使用的模板化类中的嵌套类
- C++嵌套模板类语法
- 嵌套模板类返回类型在 C++ 中的头文件中函数返回类型的语法
- CFG 和 PDA 用于具有完美嵌套括号和括号的语法
- 将xml字符串嵌套到xml元素中的语法
- 嵌套变体的简明初始化语法
- 嵌套模板类专用化的语法
- 类型严格依赖于另一个(嵌套类)语法
- 定义嵌套模板的法律语法是什么?
- 返回模板的嵌套类时出现语法错误
- 嵌套模板类语法错误(MSVC)
- 在模板化嵌套类中分离运算符重载<<的声明和定义的正确语法?
- 初始化构造函数中嵌套成员的语法