cpp迭代器问题

sur*_*esh 1 c++ templates

template<class T>
    class mStack
    {
    private:
       vector<T> a; 
       vector<T>::iterator top;
    public:
       void push(T);
       T pop();
       mStack();
       void printStack();
};
Run Code Online (Sandbox Code Playgroud)

上面的类的代码没有被编译...为什么?问题是什么?编译器说"预期;高于顶部".

小智 12

你需要一个类型名称:

typename vector<T>::iterator top;
Run Code Online (Sandbox Code Playgroud)

这使编译器vector<T>确实真的是一种类型.有关此模板和其他模板的讨论,请参阅C++ FAQ.