多值DWORD枚举作为一个函数参数C ++

时间:2014-10-13 05:53:22

标签: c++ enums dword

我无法让它发挥作用。我想在第一个功能区域(颜色和黑色)中包含两个值。

在arg1中使用一个arg可以正常工作:     func(arg_a::Color, 5);

我在arg1中尝试了以下变化失败:

arg_a::Color || Black arg_a::Color && Black (arg_a::Color, arg_a::Black) DWORD test = arg_a::Color&&Black;

我的文档如下: arg_a 键入:DWORD

arg_a可以是以下一个或多个值: 颜色 白色 黑色

2 个答案:

答案 0 :(得分:2)

编码两个"枚举值"在一,你通常每个值使用一位:

enum {
    Black = 0x01;
    White = 0x02;
    Color = 0x04;
}

然后你可以将它们与按位运算符结合起来:

call(Black|White);
// or perhaps easier to read
call(Black + White);

在接收端

call(int val) {
    if (val & Black) { ... }
    if (val & White) { ... }

请注意,这只是伪代码。

答案 1 :(得分:0)

尝试DWORD(arg_a :: Black,arg_a :: Color)//预定义的宏 或(arg_a :: Black | arg_a :: Color)//按位或

您正在使用逻辑运算符,但需要一些按位运算才能完成此操作。