如何实现模板内部类函数(c++)
How to implement template inner class function (C++)
考虑下面的例子:
template <typename T>
class Vector {
T* data;
public:
class Iterator {
T* i;
public:
Iterator& operator++();
};
};
如果我想实现'operator++'函数,我这样写是有意义的:
template <typename T>
Vector<T>::Iterator& Vector<T>::Iterator::operator++() {
i++;
return *this;
}
然后我得到这些错误行:
error C2143: syntax error : missing ';' before '&'
error C2065: 'T' : undeclared identifier
error C2923: 'Vector' : 'T' is not a valid template type argument for parameter 'T'
为什么会发生?我该怎么解决这个问题呢?
非常感谢。
编译器不知道Vector
的成员Iterator
一定是一个类型,所以你需要用typename
关键字来告诉它:
template <typename T>
typename Vector<T>::Iterator& Vector<T>::Iterator::operator++() {
//here^
i++;
return *this;
}
有关typename
的详细信息,请参阅此问题
相关文章:
- 如何通过派生类函数更改基类中的向量
- 库函数需要一个 std::function<void(void)>,如何传入类函数?
- 在类函数中初始化外部作用域变量
- c++ 在非类函数中使用类变量
- SDL_PollEvent() 无法捕获类函数内部SDL_QUIT?
- 从类成员函数到类 C 函数指针的转换
- 如何在模板类函数中分配结构值?
- 有没有办法将重载的类函数绑定到函数对象?
- 启动类函数作为失去引用的线程
- C++调用使用重写函数的父类函数
- 将值传递到另一个类函数在打印时为零
- 计算对类函数的所有调用次数
- 由于签名差异,调用了错误的子类函数
- 使用宏调用类函数
- 访问类内部的函数指针
- 访问被重写基类函数内部的成员变量
- string在类对象内部的函数中传递时失去值
- 在当前为对象的另一个类内部调用类函数
- 在c++中同一类的另一个函数内部使用类函数
- 从类函数内部调用 DLL 的外部函数