Kut*_*u V 5 c++ enums constructor class function
我有一个枚举作为一个类的公共memebr如下"
class myClass
{
public:
enum myEnum
{
myEnum1,
myEnum2
};
};
Run Code Online (Sandbox Code Playgroud)
我还声明了一个构造函数,一个公共参数化如下:
myClass(myEnum);
Run Code Online (Sandbox Code Playgroud)
我在类定义之外定义相同的内容如下:
myClass :: myClass(myEnum E)
{
}
Run Code Online (Sandbox Code Playgroud)
如何使用默认参数初始化myEnum?
我试过了:
一世)
myClass :: myClass(myEnum E = 0); //to int error
Run Code Online (Sandbox Code Playgroud)
II)
myClass :: myClass(myEnum E = {0}); //some error
Run Code Online (Sandbox Code Playgroud)
三)
myClass :: myClass(myEnum E = {0, 1}); //some error
Run Code Online (Sandbox Code Playgroud)
有一件事我似乎还不明白.
如何将枚举值传递给构造函数.我仍然得到一个错误.而且,我需要这样做:
derived(arg1, arg2, arg3, enumHere, arg4, arg5); //call
Run Code Online (Sandbox Code Playgroud)
功能定义:
derived(int a, int b, int c, enumHere, int 4, int 5) : base(a, b);
Run Code Online (Sandbox Code Playgroud)
我应该在哪里初始化枚举,作为下面的答案之一呢?
好像你用字段错误的类型声明.在您的类myEnum
中声明类型,类本身不包含该类型的任何字段.
试试这个:
class myClass
{
public:
enum myEnum
{
myEnum1,
myEnum2
} enumField;
};
Run Code Online (Sandbox Code Playgroud)
然后,您的构造函数应该使用成员初始化:
myClass::myClass() : enumField(myEnum1) {};
Run Code Online (Sandbox Code Playgroud)
如果你想要参数化的构造函数:
myClass::myClass(myEnum e) : enumField(e) {};
Run Code Online (Sandbox Code Playgroud)
如果您希望参数化构造函数具有默认参数:
myClass(myEnum e = myEnum1) : enumField(e) {};
Run Code Online (Sandbox Code Playgroud)
如果要在派生类中使用上述构造函数:
myDerived(myEnum e) : myClass(e) {};
Run Code Online (Sandbox Code Playgroud)