5

我有一个包含许多成员和不同类型的结构(大约有 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};

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

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

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

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

4

2 回答 2

3

[编辑] 随着问题的改变

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

TheStruct Object = {FIRST};

您的初始化列表使用您编写的内容初始化给定数量的结构成员,并使用“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};
于 2013-01-04T11:29:39.127 回答
0

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

于 2013-01-04T11:14:20.483 回答