C++ 如何使用枚举成员初始化结构?

C++ 如何使用枚举成员初始化结构?,c++,struct,C++,Struct,我有一个包含许多成员和不同类型的结构(大约有20个成员): 它将给出编译错误,但在我看来,这种初始化是最好的方法 我能想到的其他方法是: 1. ZeroMemoryit,但我不喜欢这个 2.编写构造函数,但这需要大量工作 3.只是不要初始化它 那么,有没有办法解决枚举问题?我应该在这三种方式中选择一种方式吗? 谢谢 编辑: 我犯了一个大错误,只有当TheEnum作为第一个成员出现时才会发生错误。 用VS2008和C++编写的代码。 错误是C2440 您可以像初始化任何其他成员一样初始化enum成

我有一个包含许多成员和不同类型的结构(大约有20个成员):

它将给出编译错误,但在我看来,这种初始化是最好的方法

我能想到的其他方法是:
1.
ZeroMemory
it,但我不喜欢这个
2.编写构造函数,但这需要大量工作
3.只是不要初始化它

那么,有没有办法解决枚举问题?我应该在这三种方式中选择一种方式吗?
谢谢

编辑: 我犯了一个大错误,只有当
TheEnum
作为第一个成员出现时才会发生错误。
用VS2008和C++编写的代码。
错误是C2440

您可以像初始化任何其他成员一样初始化
enum
成员。例如:
TheStruct temp={0,0,“,FIRST}

[编辑]随着问题的更改

如果初始化结构,则必须在初始值设定项中提供正确的类型。 在您的情况下,正确的初始化如下所示:

TheStruct Object = {FIRST};
初始化列表使用您编写的内容初始化给定数量的结构成员,并使用“0”初始化结构的其余部分。 由于您的第一个成员是枚举,因此在本例中必须初始化该枚举

[/编辑]

没有什么必要。如果你在C中编译而不是C++,不要忘记写枚举和结构,所有的东西都应该工作……
enum TheEnum
{
    FIRST = 0,
    SECOND,
    ...
}

struct TheStruct
{
    int a;
    int b;
    char c[32];
    ...
    enum TheEnum z; // <--- the point !!!
}

struct TheStruct Object = {0};
enum TheEnum
{
第一个=0,
第二
...
}
结构
{
INTA;
int b;
charc[32];
...

Enm TeNeunz Z;//编译器错误是什么?编译好:它在GCC 4.7.2上工作,我是否丢失了什么?我用VS2008和C++代码编译。错误是C2440。请在问题中给出这些重要的细节而不是评论。不要让我们在评论周围用头骨来找到这些细节。好,我将添加到我的帖子中。抱歉。你知道其他语言没有这个问题吗?C。也许OP应该编译为C。因为上面的代码在C++中编译得很好(也见HMJD的注释)我猜想是,他无意中把它编译成C代码……我用VS2008编译了,作为C++代码。错误是C2440。编辑你的问题,看我编辑的答案……-……-虽然不是我想象的,但是这无疑是正确的答案。接受和赞成:PHI我编辑了问题…对不起Enm成员Sould是第一个成员。我确实希望使用
={0}
技巧,而不是专门编写每个成员,因为要编写的成员太多了。所有未显式初始化的成员都将被初始化为0。在您的情况下
结构temp={first};
将首先将枚举初始化为
,其余字段将隐式设置为0。这可能有效,也许我会试试。但是是否有更“通用”的方法方法?如果有人更改了
TheEnum
中的名称,那么我必须修改此初始化。不知何故,我的尝试就像将所有内容设置为零,而不管
TheEnum
中的内容是什么。更一般的方法是定义一个构造函数,正如我在帖子中所说的那样……成员太多了。因此,无论我有多少,你都建议我有成员,就在ctor中初始化所有成员?
TheStruct Object = {FIRST};
enum TheEnum
{
    FIRST = 0,
    SECOND,
    ...
}

struct TheStruct
{
    int a;
    int b;
    char c[32];
    ...
    enum TheEnum z; // <--- the point !!!
}

struct TheStruct Object = {0};