我有一个包含元组数组的类,如下所示:
template<size_t __v, typename ... __tz>
class turray{
public:
std::tuple<__tz ...> array[__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
}
第一种方法有效,但很大,不希望使用。第二种方法导致以下错误:error: too many initializers for ‘turray<2, int, float>’
227 | turray<2, int, float> mturray1{{1, 1.1}, {2, 2.2}};
| ^
如果有人可以告诉我什么是正确的方法,我将不胜感激。 最佳答案
您只需要添加另一对括号:
turray<2, int, float> mturray1 { { {1, 1.1}, {2, 2.2} } };
// ^ ^ tuple
// ^ ^ array
// ^ ^ turray
这是demo。