c++ - 初始化嵌套结构数组

标签 c++ arrays struct initialization

我正在尝试初始化一个嵌套结构数组。

这就是我正在做的事情:

// init a nested struct
struct L1 {
    struct L2 {
        int i[4];
    } l2[3];
};

L1::L2 l2 = {1,2,3,4};

L1::L2 l2_a[] = { {1,2,3}, {1,2}, {1,2,3,4}};

L1 l1 = {
    {{1,2,3}, {1,2}, {1,2,3,4}}
};

L1 l1_a0 = {};
L1 l1_a1 = {0};

L1 l1_a[] = {
    {{1,2,3}, {1,2}, {1,2,3,4}},
    {{1,2,3}, {1,2}, {1,2,3,4}}
}; // ... error: too many initializers for 'L1'

根据上面发生的正确情况,我希望派生的最后一行(初始化嵌套结构数组)是正确的,但令我惊讶的是,编译器不喜欢它。

到底能不能做到? Here's关于初始化嵌套结构的相关文章。顺便说一句,我正在使用 g++。

最佳答案

是的,你可以:始终编译 -Wall 的另一个原因,因为编译器可以给你有用的警告,例如:

warning: missing braces around initializer for ‘L1::L2 [3]’

最终结果并不漂亮,但是您最终在编译器输出的电传打字机硬拷贝上浪费了更少的树:

在这里观看直播:http://ideone.com/YKq3d

struct L1 {
    struct L2 {
        int i[4];
    } l2[3];
};

L1::L2 l2 = { {1,2,3,4} };

L1::L2 l2_a[] = { {{1,2,3}}, {{1,2}}, {{1,2,3,4}}};

L1 l1 = {
    {{{1,2,3}}, {{1,2}}, {{1,2,3,4}}}
};

L1 l1_a0 =  {};
L1 l1_a1 = {{{{0}}}};

L1 l1_a[] = {
    {{{{1,2,3}}, {{1,2}}, {{1,2,3,4}}}},
    {{{{1,2,3}}, {{1,2}}, {{1,2,3,4}}}} 
}; // ... sweet potatoes!


int main()
{
    return 0;
}

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

相关文章:

c++ - 具有包含 void* 的结构的函数的 const 正确性和参数

c++ - OpenGL glRasterPos 没有正确接受我的值

c++ - 如何强制 g++ 链接器加载不直接调用的符号 - 避免 undefined reference

java - 如何修复: Number of occurrences of a letter in a string

pointers - 分配嵌入的 Struct 类型值

swift - Swift UI:预期返回“某些 View ”的函数中缺少返回

C++ 二维数组用文件中的最后一个元素值填充所有元素

c++ - 标准库 (STL) 容器是否支持一种 nothrow 分配形式?

Java - 将字符串转换为字符串数组

javascript - 向数组中的每个元素添加一个类?