我的主要课程是:
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)
{}
第三类是 (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
但我无法使其工作。