Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/130.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在可变模板类的构造函数中初始化元组成员_C++_Templates_Stdtuple - Fatal编程技术网

C++ 在可变模板类的构造函数中初始化元组成员

C++ 在可变模板类的构造函数中初始化元组成员,c++,templates,stdtuple,C++,Templates,Stdtuple,假设我有一个变量类: 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&

假设我有一个变量类:

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(???) : ??? { }
};

假设派生类中有正确的构造函数:

template<class... T>
class System
{
    std::tuple<T...> variables;
public:
    System(const T&... t) : variables(t...) { }
};

System<VAR1, VAR2> s({"VAR1", 10}, {"VAR2", 20});
模板
阶级制度
{
std::元组变量;
公众:
系统(常数T&…T):变量(T…{}
};
系统s({“VAR1”,10},{“VAR2”,20});

谢谢您的回答。现在我明白了,我应该重新考虑最初的想法,因为我不想在每个派生类中定义(相同的)构造函数:我想使用派生类作为标记,通过类型(扮演名称的角色)来区分不同的变量,而不是
std::get
@Evgeny put
using Variable::Variable也允许以这种方式初始化。此代码不是编译代码,您需要更改变量(t…)@Kapil Nice spot,谢谢!真不敢相信我竟然忘了这么明显的事情。
template<class... T>
class System
{
    std::tuple<T...> variables;
public:
    System(const T&... t) : variables(t...) { }
};

System<VAR1, VAR2> s({"VAR1", 10}, {"VAR2", 20});