我有一个复杂的问题,需要帮助。
我有一个基本案例
class ParamBase
{
string paramValue;
//...
}
和一堆具有不同模板参数的类模板。
template <typename T>
class Param : public ParamBase
{
T value;
//...
}
现在,每个Param实例都有不同的模板参数,double,int,string ...等。
为了简化操作,我有一个指向其基类指针的 vector ,该 vector 包含已创建的所有实例:
vector<ParamBase*> allParamsObjects;
问题是:
我如何运行一个函数(全局或成员或您选择的任何东西),该函数将使用不同的模板参数转换所有这些不同实例的字符串paramValue并将转换结果保存为Param::value中的适当类型。这必须在 vector allParamsObjects中保存的所有对象上运行。
因此,如果第一个Param的模板参数为double,则必须将paramValue转换为double并保存在value中;如果第二个Param的参数为int,则第二个的paramValue必须转换为int并保存在value中……等等。
任何帮助将不胜感激:-)
最佳答案
像这样吗
class ParamBase {
std::string paramValue;
public:
virtual void convert() = 0;
};
template <typename T>
class Param : public ParamBase
{
T value;
public:
virtual void convert() {
std::stringstream ss(paramValue);
ss >> value;
}
};