我有一个复杂的问题,需要帮助。

我有一个基本案例

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;
    }
};

10-08 16:29