【问题标题】:cpp iterator problemcpp迭代器问题
【发布时间】:2009-03-25 11:18:02
【问题描述】:
template<class T>
    class mStack
    {
    private:
       vector<T> a; 
       vector<T>::iterator top;
    public:
       void push(T);
       T pop();
       mStack();
       void printStack();
};

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

【问题讨论】:

    标签: c++ templates


    【解决方案1】:

    你需要一个类型名:

    typename vector<T>::iterator top;
    

    这让编译器放心,vector&lt;T&gt; 确实是一个类型。有关此问题和其他模板问题的讨论,请参阅C++ FAQ

    【讨论】:

    • 只需将您的字符串替换为 Neil 建议的“top”即可。
    • 我希望我能写一个好的、简单的解释来说明何时需要它,但实际上大多数时候只是在任何使用模板参数的类型之前添加 typename 是无害且有效的.
    • @pete - 这就是为什么我将他们推荐给常见问题解答 :-)
    • 非常感谢你们......我明白了。
    猜你喜欢
    • 2012-07-18
    • 1970-01-01
    • 2011-02-13
    • 2011-02-15
    • 1970-01-01
    • 1970-01-01
    • 2012-01-22
    相关资源
    最近更新 更多