C++ 如何实现模板内部类函数(C+;+;)
考虑到下面的例子:C++ 如何实现模板内部类函数(C+;+;),c++,class,templates,C++,Class,Templates,考虑到下面的例子: template <typename T> class Vector { T* data; public: class Iterator { T* i; public: Iterator& operator++(); }; }; 为什么会这样?我该怎么解决这个问题呢 非常感谢 编译器不知道向量的成员迭代器必然是一个类型,因此您需要用类型名关键字告诉它: template <typena
template <typename T>
class Vector {
T* data;
public:
class Iterator {
T* i;
public:
Iterator& operator++();
};
};
为什么会这样?我该怎么解决这个问题呢
非常感谢 编译器不知道
向量
的成员迭代器
必然是一个类型,因此您需要用类型名
关键字告诉它:
template <typename T>
typename Vector<T>::Iterator& Vector<T>::Iterator::operator++() {
//here^
i++;
return *this;
}
模板
typename向量::迭代器&向量::迭代器::运算符++(){
//这里^
i++;
归还*这个;
}
有关
typename
template typename Vector::Iterator&Vector::Iterator::operator++(){
Ahhaha,«聪明的想法会同时出现在头脑中»非常感谢!!我会看到的。或者C++11中的auto Vector::Iterator::operator++()->Iterator&
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'
template <typename T>
typename Vector<T>::Iterator& Vector<T>::Iterator::operator++() {
//here^
i++;
return *this;
}