2014-10-13 104 views
0

我無法得到它的工作。我想在第一個func arg點(Color和Black)中包含兩個值。多值DWORD枚舉作爲一個函數參數C++

它正常工作與一個ARG在ARG1: 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可以是以下一個或多個值: Col或 白 黑

回答

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) { ... } 

注意這只是僞代碼。

+0

這很好,謝謝! –

0

嘗試DWORD(arg_a ::黑,arg_a ::顏色)//預定義宏 或(arg_a ::黑色| arg_a ::顏色)//按位或

您使用邏輯運算符,但你需要一些按位操作來完成此操作。