c++ - 如何实现模板内部类函数(C++)

标签 c++ class templates

考虑下面的例子:

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

参见 this question有关 typename 的更多详细信息。

关于c++ - 如何实现模板内部类函数(C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30752129/

相关文章:

c++ - 我类的析构函数做错了吗? C++

c++ - 将 enable_if 与两个级别的模板一起使用

python - Sphinx 无法处理类定义内的函数分配

找不到php命名空间类 - Twig Composer

c++ - 如何使用 push_back 将元素随机添加到 vector 中

c++ - 模板 std::function 作为类成员函数 C++

c++ - 我怎样才能有一个模板元素的容器

c++ - Excel 64 位中的 C 函数不能用作工作表函数,但在 VBA 中运行良好

c++ - 为什么 C++ const 引用可以折叠成非常量引用

c++ - 编译好的文件放到文件夹后无法运行程序