3
假设我有一个类变量:初始化元组成员在可变参数模板类的构造函数
class Variable
{
const std::string name;
const double scale;
public:
Variable(const std::string& _name, double _scale) : name(_name), scale(_scale) { }
};
现在我定义一个类含有变量的系统:
template<class... T>
class System
{
std::tuple<T...> variables;
public:
System(???) : ??? { }
};
我如何定义System
的构造函数会以某种方式将它的结果传递给variables
以初始化它们中的每一个?我希望能够写这样的事:
class VAR1 : public Variable { };
class VAR2 : public Variable { };
System<VAR1, VAR2> s{ /* init values: ("VAR1", 10), ("VAR2", 20) */};
谢谢你的答案。现在我发现我应该重新考虑最初的想法,因为我不想在每个派生类中定义(相同)构造函数:我想使用派生类作为标记来区分不同类型的变量(扮演角色的角色),而不是数字在'std :: get <...>'。 – Evgeny
@Evgeny在派生类中使用'使用变量::变量;'可以让它以这种方式初始化。 –
这段代码不是编译你需要改变变量(t ...) – Kapil