如何初始化具有枚举成员的结构

How to initialize a struct with enum member?

本文关键字:枚举成员 结构 初始化      更新时间:2023-10-16

我有一个结构,它有很多成员和不同的类型(大约有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];
    ...
}

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

TheStruct Object = {0};

它会产生编译错误,但在我看来,这种初始化是最好的方式。

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

那么,有什么方法可以解决enum问题吗?我应该在这三条路上选一条路吗
谢谢

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

[edit]因为问题改变了

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

TheStruct Object = {FIRST};

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

[/edit]

没有什么必要的。如果你用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成员。例如:TheStruct temp = {0,0,"", FIRST};