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编辑有帮助吗?我不确定您认为代码片段中的每个大括号是什么意思。