执行一个函数来影响不同的模板类实例

时间:2012-04-06 17:21:24

标签: c++ class templates inheritance polymorphism

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

我有一个基本案例,

class ParamBase
{
    string paramValue;
    //...
}

和一堆具有不同模板参数的类模板。

template <typename T>
class Param : public ParamBase
{
   T value;
   //...
}

现在,Param的每个实例都有不同的模板参数,double,int,string ......等。

为了使它更容易,我有一个基类指针的向量,其中包含已创建的所有实例:

vector<ParamBase*> allParamsObjects;

问题是:

如何运行单个函数(全局或成员或任何东西,您的选择),将所有这些不同实例的字符串paramValue转换为不同的模板参数,并将转换结果保存到Param :: value中的相应类型。这必须在vector allParamsObjects中保存的所有对象上运行。

因此,如果第一个Param的模板参数是double,则必须将paramValue转换为double并保存在值中;如果第二个Param的参数是int,那么第二个paramValue必须转换为int并保存在值...等等。

任何帮助都将受到高度赞赏: - )

2 个答案:

答案 0 :(得分:1)

这样的东西?

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

答案 1 :(得分:0)

Convert中声明一个抽象方法ParamBase,在每个模板化派生类中实现它以将字符串转换为值,然后在循环中调用该方法。

相关问题