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;
}