c++ - 通过构造函数初始化枚举

标签 c++ class function constructor enums

我有一个枚举作为类的公共(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/

相关文章:

c++ - 构造函数不返回可用对象

c++ - 痛饮 : How to typemap two fields of a struct?

python - 如何决定在不使用 'if' 语句的情况下创建子类

function - 如果不使用引号 '' ,将函数作为参数传递给另一个函数将无法编译?

类 : Passing struct array giving strange result 的 C 程序

c++ - C++中的for循环提前一步使用双重突破,未达到边界值

c++ - 使用 QMake 如何为每个 main() 构建一个项目

html - 在 CSS 中选择具有确定类的 div 中的特定元素

C#文件类的相对路径

c - 在 C 中决定返回值的通用方法是什么?