Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/134.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/arrays/14.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++_Arrays_Templates_Initialization_Tuples - Fatal编程技术网

C++ 初始化包含元组数组的类的正确且简单的方法是什么?

C++ 初始化包含元组数组的类的正确且简单的方法是什么?,c++,arrays,templates,initialization,tuples,C++,Arrays,Templates,Initialization,Tuples,我有一个包含元组数组的类,如下所示: template<size_t __v, typename ... __tz> class turray{ public: std::tuple<__tz ...> array[__v]; }; 模板 特瑞级{ 公众: std::元组数组[_v]; }; 它没有任何用户定义的构造函数,我想知道如何初始化它。 请考虑以下方法: int main(){ turray<2, int, float> mturr

我有一个包含元组数组的类,如下所示:

template<size_t __v, typename ... __tz>
class turray{
public:
    std::tuple<__tz ...> array[__v];
};
模板
特瑞级{
公众:
std::元组数组[_v];
};
它没有任何用户定义的构造函数,我想知道如何初始化它。 请考虑以下方法:

int main(){
    turray<2, int, float> mturray0{std::tuple<int, float>{1, 1.1}, std::tuple<int, float>{2, 2.2}}; //works but is very big
    turray<2, int, float> mturray1{{1, 1.1}, {2, 2.2}};// causes error
}
intmain(){
turray mturray0{std::tuple{1,1.1},std::tuple{2,2.2};//工作正常,但非常大
turray mturray1{{1,1.1},{2,2.2};//导致错误
}
第一种方法有效,但非常大,不理想。第二种方法导致以下错误:

error: too many initializers for ‘turray<2, int, float>’
  227 |  turray<2, int, float> mturray1{{1, 1.1}, {2, 2.2}};
      |                                                   ^
错误:“turray”的初始值设定项太多
227 | turray mturray1{{1,1.1},{2,2.2};
|                                                   ^

如果有人能告诉我正确的方法,我将不胜感激。

您只需再添加一对大括号:

turray<2, int, float> mturray1 { { {1, 1.1}, {2, 2.2} } };
//                                 ^      ^                tuple
//                               ^                    ^    array
//                             ^                        ^  turray
turray mturray1{{{{1,1.1},{2,2}};
//^^^元组
//^^数组
//屠宰场

这是一张。

谢谢,你能帮我吗explain@AKL编辑有帮助吗?我不确定您认为代码片段中的每个大括号是什么意思。