0
我們如何創建或向用戶顯示錯誤或警告,他/她 無法輸入具有與其他輸入 標誌相反值的標誌或顯示他/她已經提出了無效的論點。C++檢查函數的「標誌參數」
struct Flags
{
enum Values
{
None = 0,
Yes = 1,
No = 2,
Good = 4,
Bad = 8
};
};
void Function(__in int p_Flag)
{
if(p_Flag & Flags::Yes)
std::cout << "Yes\n";
else if(p_Flag & Flags::No)
std::cout << "No\n";
if(p_Flag & Flags::Good)
std::cout << "Good\n";
else if(p_Flag & Flags::Bad)
std::cout << "Bad\n";
};
int main(void)
{
Function(Flags::Yes | Flags::No); // Error/warning (not OK)
Function(Flags::Good | Flags::Bad); // Error/warning (not OK)
Function(Flags::Yes | Flags::Bad); // OK!
return(0);
};
雖然第一個相反的國旗將在其他選擇,我們應該仍然顯示警告或錯誤,以確保該標誌,用戶真正需要的。
Function(Flags::Yes | Flags::No);
static_assert可能是值得考慮的 – 2013-02-28 05:36:23
你可以簡單地記錄一些標誌優先於其他人,即的隱含存在禁用B. – 2013-02-28 05:38:40
@Ed S.我應。 – CLearner 2013-02-28 05:39:21