我正在尝试解决一个由包含多个参数的对象(称为图表)组成的编程问题。每个参数(Parameter 类)可以是以下几种类型之一:int、double、complex、string - 仅举几例。
所以我的第一个直觉是将我的 Diagram 类定义为具有模板参数的向量,看起来像这样。
class Diagram
{
private:
std::vector<Parameter<T> > v;
};
这不编译,我明白为什么。因此,根据此页面上的建议如何声明类中任何类型的对象的数据成员,我将代码修改为:
class ParameterBase
{
public:
virtual void setValue() = 0;
virtual ~ParameterBase() { }
};
template <typename T>
class Parameter : public ParameterBase
{
public:
void setValue() // I want this to be
// void setValue(const T & val)
{
// I want this to be
// value = val;
}
private:
T value;
};
class Diagram
{
public:
std::vector<ParameterBase *> v;
int type;
};
我无法弄清楚如何使用适当的模板化参数调用 setValue 函数。在 ParameterBase 抽象基类中不可能有模板化参数。任何帮助是极大的赞赏。
PS 我没有使用 boost::any 的灵活性。