C ++ setGender方法恢复为默认值

时间:2015-05-31 21:51:46

标签: c++

我已经编写了下面的代码位。我有一个构造函数,它接受五个参数。不幸的是,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;
}

1 个答案:

答案 0 :(得分:3)

无论输入如何,

if (gdr != 'M' || gdr != 'F') 始终为true。如果您传递'M',则表达式的第二部分为真。如果您正在传递任何其他内容,则表达式的第一部分将变为真。

您打算写的是if (gdr != 'M' && gdr != 'F')

提高编译器的警告级别可能有助于您发现错误。大多数编译器会警告表达式总是在评估单个值,或者至少是关于它后面的无法访问的代码。