我已经编写了下面的代码位。我有一个构造函数,它接受五个参数。不幸的是,setGender方法为类的所有实例吐出默认的“M”,而不是将性别设置为指定的参数。我做错了什么?任何建议将不胜感激。谢谢。
DateProfile::DateProfile(char gdr,
char searchGdr, int romanceScale, int financeScale, string theName)
bool DateProfile::setGender(char gdr)
{
if (gdr != 'M' || gdr != 'F')
return false;
gender = gdr;
return true;
}
答案 0 :(得分:3)
if (gdr != 'M' || gdr != 'F')
始终为true。如果您传递'M'
,则表达式的第二部分为真。如果您正在传递任何其他内容,则表达式的第一部分将变为真。
您打算写的是if (gdr != 'M' && gdr != 'F')
。
提高编译器的警告级别可能有助于您发现错误。大多数编译器会警告表达式总是在评估单个值,或者至少是关于它后面的无法访问的代码。