C++ 如何使用枚举成员初始化结构?
我有一个包含许多成员和不同类型的结构(大约有20个成员): 它将给出编译错误,但在我看来,这种初始化是最好的方法 我能想到的其他方法是:C++ 如何使用枚举成员初始化结构?,c++,struct,C++,Struct,我有一个包含许多成员和不同类型的结构(大约有20个成员): 它将给出编译错误,但在我看来,这种初始化是最好的方法 我能想到的其他方法是: 1. ZeroMemoryit,但我不喜欢这个 2.编写构造函数,但这需要大量工作 3.只是不要初始化它 那么,有没有办法解决枚举问题?我应该在这三种方式中选择一种方式吗? 谢谢 编辑: 我犯了一个大错误,只有当TheEnum作为第一个成员出现时才会发生错误。 用VS2008和C++编写的代码。 错误是C2440 您可以像初始化任何其他成员一样初始化enum成
1.
ZeroMemory
it,但我不喜欢这个2.编写构造函数,但这需要大量工作
3.只是不要初始化它 那么,有没有办法解决枚举问题?我应该在这三种方式中选择一种方式吗?
谢谢 编辑: 我犯了一个大错误,只有当
TheEnum
作为第一个成员出现时才会发生错误。用VS2008和C++编写的代码。
错误是C2440 您可以像初始化任何其他成员一样初始化
enum
成员。例如:TheStruct temp={0,0,“,FIRST}代码>[编辑]随着问题的更改
如果初始化结构,则必须在初始值设定项中提供正确的类型。
在您的情况下,正确的初始化如下所示:
TheStruct Object = {FIRST};
初始化列表使用您编写的内容初始化给定数量的结构成员,并使用“0”初始化结构的其余部分。
由于您的第一个成员是枚举,因此在本例中必须初始化该枚举
[/编辑]
没有什么必要。如果你在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 TheEnum
{
第一个=0,
第二
...
}
结构
{
INTA;
int b;
charc[32];
...
Enm TeNeunz Z;//编译器错误是什么?编译好:它在GCC 4.7.2上工作,我是否丢失了什么?我用VS2008和C++代码编译。错误是C2440。请在问题中给出这些重要的细节而不是评论。不要让我们在评论周围用头骨来找到这些细节。好,我将添加到我的帖子中。抱歉。你知道其他语言没有这个问题吗?C。也许OP应该编译为C。因为上面的代码在C++中编译得很好(也见HMJD的注释)我猜想是,他无意中把它编译成C代码……我用VS2008编译了,作为C++代码。错误是C2440。编辑你的问题,看我编辑的答案……-……-虽然不是我想象的,但是这无疑是正确的答案。接受和赞成:PHI我编辑了问题…对不起Enm成员Sould是第一个成员。我确实希望使用={0}
技巧,而不是专门编写每个成员,因为要编写的成员太多了。所有未显式初始化的成员都将被初始化为0。在您的情况下结构temp={first};
将首先将枚举初始化为,其余字段将隐式设置为0。这可能有效,也许我会试试。但是是否有更“通用”的方法方法?如果有人更改了TheEnum
中的名称,那么我必须修改此初始化。不知何故,我的尝试就像将所有内容设置为零,而不管TheEnum
中的内容是什么。更一般的方法是定义一个构造函数,正如我在帖子中所说的那样……成员太多了。因此,无论我有多少,你都建议我有成员,就在ctor中初始化所有成员?
TheStruct Object = {FIRST};
enum TheEnum
{
FIRST = 0,
SECOND,
...
}
struct TheStruct
{
int a;
int b;
char c[32];
...
enum TheEnum z; // <--- the point !!!
}
struct TheStruct Object = {0};