我们如何创建或显示错误或警告,告诉用户他/她不能输入与另一个已经输入的标志具有相反值的标志?我们如何证明用户使用了无效的参数?
演示问题的示例:
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 );