执行函数以影响不同的模板类实例

Execute a function to affect different template class instances

本文关键字:实例 函数 影响 执行      更新时间:2023-10-16

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

我有一个基本案例,

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

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

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

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

为了方便起见,我有一个指向其基类指针的向量,其中包含已创建的所有实例:

vector<ParamBase*> allParamsObjects;

问题是:

我如何运行单个函数(全局或成员或任何内容,您的选择),该函数使用不同的模板参数转换所有这些不同实例的字符串 paramValue,并将转换结果保存到 Param::value 中的适当类型。这必须对保存在向量allParamsObjects中的所有对象运行。

因此,如果第一个参数的模板参数是双精度的,则 paramValue 必须转换为双精度并保存在 value 中;如果第二个参数的参数是 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;
    }
};

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