我的结构或多或少遵循这种模式:
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/