首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在C++中使用括号表示法将二维数组传递给方法的问题

在C++中使用括号表示法将二维数组传递给方法的问题
EN

Stack Overflow用户
提问于 2015-11-03 20:11:40
回答 1查看 58关注 0票数 0

我有一个包含一些动画信息的结构,我希望能够用一个2D数组初始化这个结构,而不需要先创建和初始化这个数组。

我的动画结构的构造函数如下:

代码语言:javascript
复制
Animation( int frames[][2], int count );

我想实现这样的目标:

代码语言:javascript
复制
Animation* m_PlayerAnimation = new Animation( { { 3, 9 }, { 11, 9 }, { 19, 9 } }, 3 );

我知道这是可能的,但是我正在寻找一个1行的解决方案:

代码语言:javascript
复制
int arr[][2] = { { 3, 9 }, { 11, 9 }, { 19, 9 } };
Animation* m_PlayerAnimation = new Animation( arr, 3 );

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-03 20:20:13

问题是参数int frames[][2]在哪里,frames是指针。所以你不能在那里创建一些东西,因为它不是一个指针。这是C.

如果希望能够就地创建任意数组,则必须将构造函数更改为:

代码语言:javascript
复制
template <size_t N>
Animation(const int (&frames)[N][2]) { .. }

这让你可以写:

代码语言:javascript
复制
Animation a({{0,1}});

此时,count参数变得多余,因为它被模板参数N所取代。

或者,您可以只使用vector

代码语言:javascript
复制
Animation(std::vector<std::array<int, 2>> const& v) { .. }

它们可以以同样的方式使用:

代码语言:javascript
复制
Animation a({{0, 1}});
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33508175

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档