Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++子对象初始化_C++_C - Fatal编程技术网

C++子对象初始化

C++子对象初始化,c++,c,C++,C,我把一些C代码移植到C++,我不能解决处理子对象初始化的特定问题。 以下代码是我的意思的示例: 尽管添加-pedantic标志会引发一些警告,说明ISO C90禁止指定要初始化的子对象,但使用gcc-ansi-Wall编译它时不会出现警告或错误 my_数组的初始化操作如下所示: 索引0将有a、b、c=0 索引1我的索引将有a=10,b=20,c=30 索引2也将有a,b,c=0 索引3我的其他索引将有a,b,c=42 我非常喜欢这种形式的初始化,我觉得它简洁易懂 使用C++的这种语法会导致GC

我把一些C代码移植到C++,我不能解决处理子对象初始化的特定问题。 以下代码是我的意思的示例:

尽管添加-pedantic标志会引发一些警告,说明ISO C90禁止指定要初始化的子对象,但使用gcc-ansi-Wall编译它时不会出现警告或错误

my_数组的初始化操作如下所示:

索引0将有a、b、c=0 索引1我的索引将有a=10,b=20,c=30 索引2也将有a,b,c=0 索引3我的其他索引将有a,b,c=42 我非常喜欢这种形式的初始化,我觉得它简洁易懂

使用C++的这种语法会导致GCC认为我是因为[]声明lambda函数,甚至没有索引GCC告诉我它在“Stutt”之前期望主表达式。


<> C++中的哪一个等价于C++ 11标准?关键是能够在初始值设定项中指定结构字段名称以确保可读性。实际结构有十几个整数字段和位字段,能够在初始值设定项中看到索引也是一个优点。

C++没有C支持的所有特殊聚合初始值设定项语法。相反,请这样说:

my_struct my_array[] = { { },
                         { 10, 20, 30 },
                         { 42, 42, 42 },
                       };

我认为,数组中不能有间隙,即使是在C中也是如此。

C++没有C支持的所有特殊聚合初始值设定项语法。相反,请这样说:

my_struct my_array[] = { { },
                         { 10, 20, 30 },
                         { 42, 42, 42 },
                       };

数组中不能有间隙,我想,即使在C中也是如此。

太糟糕了,我喜欢直接在初始值设定项中看到结构成员名称。我认为gap是一个GCC扩展:它只是在需要时插入空记录。无论如何,谢谢你@strnk:你看,空记录不是一个非常C++-y的概念。C++中的对象一般不具有默认状态。太糟糕了,我喜欢在初始化器中直接看到StUrt成员名称。我认为gap是一个GCC扩展:它只是在需要时插入空记录。无论如何,谢谢你@strnk:你看,空记录不是一个非常C++-y的概念。C++中的对象一般不具有默认状态。