在可变参数模板的构造函数中初始化元组成员 class
Initialize tuple member in constructor of variadic template class
假设我有一个 class 的变量:
class Variable
{
const std::string name;
const double scale;
public:
Variable(const std::string& _name, double _scale) : name(_name), scale(_scale) { }
};
现在我定义一个包含变量的系统class:
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) */};
假设您在派生的 class:
中有正确的构造函数
template<class... T>
class System
{
std::tuple<T...> variables;
public:
System(const T&... t) : variables(t...) { }
};
System<VAR1, VAR2> s({"VAR1", 10}, {"VAR2", 20});
假设我有一个 class 的变量:
class Variable
{
const std::string name;
const double scale;
public:
Variable(const std::string& _name, double _scale) : name(_name), scale(_scale) { }
};
现在我定义一个包含变量的系统class:
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) */};
假设您在派生的 class:
中有正确的构造函数template<class... T>
class System
{
std::tuple<T...> variables;
public:
System(const T&... t) : variables(t...) { }
};
System<VAR1, VAR2> s({"VAR1", 10}, {"VAR2", 20});