我有一个枚举作为类的公共(public)内存,如下所示“
class myClass
{
public:
enum myEnum
{
myEnum1,
myEnum2
};
};
我还声明了一个构造函数,一个公共(public)参数化构造函数,如下所示:
myClass(myEnum);
我在类定义之外定义相同如下:
myClass :: myClass(myEnum E)
{
}
如何使用默认参数初始化 myEnum?
我试过:
我)
myClass :: myClass(myEnum E = 0); //to int error
二)
myClass :: myClass(myEnum E = {0}); //some error
三)
myClass :: myClass(myEnum E = {0, 1}); //some error
有一件事我似乎还是不明白。
如何将枚举值传递给构造函数。我仍然收到错误消息。而且,我需要这样做:
derived(arg1, arg2, arg3, enumHere, arg4, arg5); //call
函数定义:
derived(int a, int b, int c, enumHere, int 4, int 5) : base(a, b);
我应该在哪里初始化枚举,正如下面的答案之一那样?
最佳答案
您似乎将类型声明误认为是字段。在你的类中 myEnum
是类型的声明,类本身不包含该类型的任何字段。
试试这个:
class myClass
{
public:
enum myEnum
{
myEnum1,
myEnum2
} enumField;
};
然后,你的构造函数应该使用成员初始化:
myClass::myClass() : enumField(myEnum1) {};
如果你想要参数化的构造函数:
myClass::myClass(myEnum e) : enumField(e) {};
如果你想要带默认参数的参数化构造函数:
myClass(myEnum e = myEnum1) : enumField(e) {};
如果你想在派生类中使用上述构造函数:
myDerived(myEnum e) : myClass(e) {};
关于c++ - 通过构造函数初始化枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12551523/