包含数组的结构的 C++ 初始化

标签 c++ static-initialization

我的结构或多或少遵循这种模式:

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 个这样的结构容器的数组,只是为了再添加一层括号。

最佳答案

你做不到。如果你给数组一个大小,你可以。一个替代方案可能是:

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

但是,当然,您所有的结构都是不同的类型,因此它可能不是您想要的。您唯一的其他选择将必须是基于自由存储的,并且在 0x 中的初始化列表之前不会为您提供该语法。

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

相关文章:

c++ - lambda(或函数)C++ 中的静态初始化

java - Java 有没有办法确定一个方法是否在静态初始化器中被调用(或没有)?

java - Initialize-On-Demand 习语与单例实现中的简单静态初始化程序

c++ - 如何为这个例子中的所有参数设置相同的类型?

c++ - 如何在VC++/MFC中替换字符串中两个子字符串之间的字符串?

C++ 自定义操作返回空字符串

c++ - 在 cpp 中,编译器总是编译未使用的函数

c++ - 动态库中共享库的静态初始值设定项

c++ - 是否可以确保仅在 'static initialization' 步骤期间调用函数

C++在构造函数中调用虚方法