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