在容器中存储模板类对象的可能方式

时间:2018-09-22 19:06:46

标签: c++ templates stl containers generic-programming

我创建了用于表示参数的模板类。每个参数都由名称和一个值表示。此类也具有此类成员变量的吸气剂。我想存储此类的不同实例,例如int和double,以便能够通过其名称查找参数。我知道,我无法在一个容器中存储不同模板类型的Parameter类的不同实例。我的想法是创建抽象基类,但我想这是不可能的,因为对于模板类的double和int参数化,我必须获取值并且返回类型不相同。如果有任何想法可以实现我的目标,我将不胜感激。

template <typename ValueType>
class Parameter
{
public:
typedef ValueType value_type;

template <typename T>
explicit Parameter(const std::string& name, const T& value)
{
    static_assert(std::is_same<T, Parameter::value_type>::value, "Types are not the same");
    this->name = name;
    this->value = value;
}
const std::string& getName() const;
const value_type& getValue() const;

private:
std::string name;
ValueType value;
};

template <typename T>
const std::string& Parameter<T>::getName() const
{
return name;
}

template <typename T>
const T& Parameter<T>::getValue() const
{
return value;
}

0 个答案:

没有答案