如何初始化具有枚举成员的结构
How to initialize a struct with enum member?
我有一个结构,它有很多成员和不同的类型(大约有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};
相关文章:
- 枚举成员与静态 int 成员?
- 从类访问枚举成员
- 枚举成员不是类型错误
- std::映射键作为模板化结构与枚举成员
- 设置类的枚举成员无效地使用"枚举"
- 如何访问结构和枚举成员形成一类
- 是否可以在 constexpr 函数中遍历枚举成员,因此值为 constexpr
- 包含枚举的结构的C 复制构造函数
- 获取 [枚举成员?] 的封闭类型
- 如何使用 SWIG 枚举枚举成员
- 通过int值访问枚举成员
- '='应初始化所有枚举成员或仅初始化第一个枚举成员;
- 为什么可以获取此枚举成员值,而不必先深入研究嵌套枚举
- 将具有枚举成员的非托管结构封送到 C#
- 为C++开发人员声明和使用 C 中的枚举和结构
- 我可以使用枚举作为结构名称吗
- 将包含枚举的C++结构封送至C#
- 在类定义中声明类型(枚举、结构等)会增加代码大小
- 为类模板的枚举成员定义 std::hash
- 如何初始化具有枚举成员的结构