私の主なクラスは次のとおりです。
class Data{
public:
Data(std::string name):name_(name){};
virtual ~Data(){};
protected:
std::string name_;
};
あらゆる種類のデータを許可したいので、テンプレートを使用して継承されたクラスを作成します。
template<typename Type>
class GenericData : public Data{
public:
GenericData(std::string name, Type t);
private:
Type t_;
};
template<typename Type>
GenericData<Type>::GenericData(std::string name, Type t):
Data(name),
t_(t)
{}
3 番目のクラスは (Generic)Data のコレクションです。
class Input{
public:
Input();
~Input();
private:
std::vector<Data*> d_;
};
Input::Input(){
d_.push_back(new GenericData("double",3.2);
d_.push_back(new GenericData("int",2);
}
Input::~Input(){
for(unsigned int i(0);i<d_.size();i++){
delete d_[i];
d_[i] = NULL;
}
}
どうすればよいかわからないのは、クラスt_
から値を取得することです。Input
をtemplata<typename Type> Type Input::get(unsigned int i)
返すメソッドが欲しいt_
です。で仮想メソッドを作成しData
、別のメソッドを作成する必要があると思いますが、機能さGenericData
せることができません。