0

派生ファイルの宣言のどこが悪いのかわかりません。問題を見つけるのを手伝ってください。これは私のヘッダーファイルの内容です:

/*
* STLSandbox.h
*
*  Created on: Aug 4, 2012
*      Author: aksinghdce
*/

#ifndef STLSANDBOX_H_
#define STLSANDBOX_H_



namespace amit {

class STLSandbox {
public:
    STLSandbox();
    virtual ~STLSandbox();
};
template<typename T>
class MyCotainer{
public:
    virtual void inserthere(T&) = 0;
    virtual void deletehere(T&) = 0;
    virtual const void printhere(T&) = 0; //promise not to modify anything
};

template<typename T>
class VectorOf: public MyContainer<T>
{
public:
    virtual void inserthere(T&);
    virtual void deletehere(T&);
    virtual const void printhere(T&);
private:
    std::vector<T&> v_data; // vector of references of type T
};

template<typename T>
void VectorOf<T>::inserthere(T& item){
    v_data.push_back(item);
}

template<typename T>
void VectorOf<T>::deletehere(T& item){
    v_data.pop_back(item);
}

template<typename T>
const void VectorOf<T>::printhere(T& item){
    std::vector<T>::iterator i = null;
            for(i=v_data.begin();i<v_data.end();i++)
            {
                std::cout<<*i<<std::endl;
            }
}

}

#endif /* STLSANDBOX_H_ */

gcc 4.2.1 を使用しています

以下は私が得ているエラーです:

[...]/STLSandbox.h:26: error: expected template-name before ‘&lt;’ token
[...]/STLSandbox.h:26: error: expected `{' before ‘&lt;’ token
[...]/STLSandbox.h:26: error: expected unqualified-id before ‘&lt;’ token
[...]/STLSandbox.h:37: error: ‘template<class T> class amit::VectorOf’ used without template parameters
[...]/STLSandbox.h: In function ‘void amit::inserthere(T&)’:
[...]/STLSandbox.h:38: error: ‘v_data’ was not declared in this scope
[...]/STLSandbox.h: At global scope:
[...]/STLSandbox.h:42: error: ‘template<class T> class amit::VectorOf’ used without template parameters
4

1 に答える 1

0

単なるタイプミスのようです。クラスを定義しましたがMyCotainer(n が欠落していることに注意してください)、MyContainer後で正しいものを使用しています。

于 2012-08-05T04:13:09.760 に答える