我有一个包含许多成员和不同类型的结构(大约有 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
[编辑]随着问题的改变
如果初始化结构体,则必须在初始化程序中提供正确的类型。在您的情况下,正确的初始化将如下所示:
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)