我有一个包含一些动画信息的结构,我希望能够用一个2D数组初始化这个结构,而不需要先创建和初始化这个数组。
我的动画结构的构造函数如下:
Animation( int frames[][2], int count );我想实现这样的目标:
Animation* m_PlayerAnimation = new Animation( { { 3, 9 }, { 11, 9 }, { 19, 9 } }, 3 );我知道这是可能的,但是我正在寻找一个1行的解决方案:
int arr[][2] = { { 3, 9 }, { 11, 9 }, { 19, 9 } };
Animation* m_PlayerAnimation = new Animation( arr, 3 );提前感谢!
发布于 2015-11-03 20:20:13
问题是参数int frames[][2]在哪里,frames是指针。所以你不能在那里创建一些东西,因为它不是一个指针。这是C.
如果希望能够就地创建任意数组,则必须将构造函数更改为:
template <size_t N>
Animation(const int (&frames)[N][2]) { .. }这让你可以写:
Animation a({{0,1}});此时,count参数变得多余,因为它被模板参数N所取代。
或者,您可以只使用vector
Animation(std::vector<std::array<int, 2>> const& v) { .. }它们可以以同样的方式使用:
Animation a({{0, 1}});https://stackoverflow.com/questions/33508175
复制相似问题