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

Mar*_*Mao 5 c++ struct

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

enum TheEnum
{
    FIRST = 0,
    SECOND,
    ...
}

struct TheStruct
{
    TheEnum z; // <--- the point !!! note that this is the first member (edited)
    int a;
    int b;
    char c[32];
    ...
}
Run Code Online (Sandbox Code Playgroud)

由于有一个枚举类型成员,我不能像这样声明:

TheStruct Object = {0};
Run Code Online (Sandbox Code Playgroud)

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

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

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

编辑:我的一个大错误,该错误仅在TheEnum作为第一个成员出现时才会发生。
使用 vs2008 编译并作为 C++ 代码。
错误是C2440。http://msdn.microsoft.com/en-us/library/sy5tsf8z%28v=VS.80%29.aspx

ric*_*ico 3

[编辑]随着问题的改变

如果初始化结构体,则必须在初始化程序中提供正确的类型。在您的情况下,正确的初始化将如下所示:

TheStruct Object = {FIRST};
Run Code Online (Sandbox Code Playgroud)

您的初始化列表使用您编写的内容初始化给定数量的结构成员,并使用“0”初始化结构的其余部分。由于您的第一个成员是枚举,因此在这种情况下您必须初始化该枚举。

[/编辑]

没有什么必要的。如果您使用 C 而不是 C++ 进行编译,请不要忘记编写 enum 和 struct,一切都应该可以正常工作...

enum TheEnum
{
    FIRST = 0,
    SECOND,
    ...
}

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

struct TheStruct Object = {0};
Run Code Online (Sandbox Code Playgroud)