我有一个或多或少遵循此模式的结构:

struct sTruct {
   int count;
   struct {
       int A;
       int B;
       int C;
   } array[];   //count is the size of this array
};

我希望能够使用以下语法将其初始化:
sTruct gInit1 = { 2, { {1,2,3},{4,5,6} }};

实际上,初始化语法(或更确切地说,它的紧凑性)比特定的结构布局更重要。我没有访问标准容器(嵌入式平台)的权限,但是如果需要,我也许可以复制它们的某些行为。

在最终形式中,我想一次初始化大约300个这些sTruct容器的数组,只是增加了一层括号。

最佳答案

你做不到如果给数组指定了大小,则可以。一种替代方法可能是:

template < int size >
struct sTruct
{
  struct { int a, int b, int c } array[size];
};
sTruct<2> gInit1 = {{1,2,3},{4,5,6}};

但是,当然,您所有的sTructs都是不同的类型,因此可能不是您想要的。您唯一的其他选择是必须基于免费存储,并且在初始化列表以0x列出之前,您将无法使用该语法。

关于c++ - C++初始化包含数组的结构,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4473045/

10-13 07:58
查看更多