2009-03-25 8 views
1
template<class T> 
    class mStack 
    { 
    private: 
     vector<T> a; 
     vector<T>::iterator top; 
    public: 
     void push(T); 
     T pop(); 
     mStack(); 
     void printStack(); 
}; 

上記のクラスのコードはコンパイルされていません...なぜですか?何が問題ですか?コンパイラは "expected; above top"と言っています。cppイテレータの問題

typename vector<T>::iterator top; 

は、これは本当にコンパイラタールvector<T>を安心させるタイプである:

答えて

12

あなたは型名が必要です。このテンプレートや他のテンプレートの説明については、C++ FAQを参照してください。

+0

私はそれを得ることができます..あなたは私にいくつかの例を示すことができますか? – suresh

+0

ニールが示唆しているものであなたの文字列を "トップ"に置き換えてください。 – sharptooth

+0

私はそれが必要なときに良い、簡単な説明を書くことができたらいいと思っていますが、実際にはテンプレートパラメータを使用する型の前にtypenameを追加するだけで大​​丈夫です。 –

関連する問題