【问题标题】:Passing NULL to enum type input parameter - C++将 NULL 传递给枚举类型输入参数 - C++
【发布时间】:2016-12-17 11:22:59
【问题描述】:

在我的代码中,我有两个枚举,如下所示:

enum myEnum{e1, e2};
enum myEnum2{e3, e4};

我有一个如下的函数原型:

void function myFunc(myEnum in_enum1, myEnum in_enum2){

    some-code-here;

}

在某些情况下,我必须将第二个输入参数 in_enum2 留空。

我尝试将NULL传递给它,但是编译器在这样做时给出了参数初始化错误。

如何将 NULL 传递给枚举类型的输入参数?

提前致谢。

【问题讨论】:

    标签: c++ enums null parameter-passing


    【解决方案1】:

    枚举的底层类型通常是int,它们不是指针,所以它们不能为空。

    你可以使用指向你的枚举的指针,或者给你的枚举添加一个 NULL 选项。这是后者:

    enum myEnum{NULL, e1, e2};
    enum myEnum2{NULL, e3, e4};
    

    然后用枚举的 NULL 文字调用它。

    myFunc(myEnum::NULL, myEnum2::NULL);
    

    【讨论】:

    • 这取决于宏 NULL 是如何定义的。如果定义为0,则可以隐式转换为(无作用域的)枚举。
    • 好点那么我建议从myEnum::NULL 更改为myEnum::null
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多