Ответ 1
FYI: Casts не скроет предупреждение по дизайну.
Что-то вроде
return (id & MID_NUMBER) != 0;
должно четко указывать "Я хочу проверить, равен ли это значение нулю или нет" и позволить компилятору быть счастливым
У меня есть эта проблема в моем коде:
bool CBase::isNumber()
{
return (id & MID_NUMBER);
}
bool CBase::isVar()
{
return (id & MID_VARIABLE);
}
bool CBase::isSymbol()
{
return (id & MID_SYMBOL);
}
FYI: Casts не скроет предупреждение по дизайну.
Что-то вроде
return (id & MID_NUMBER) != 0;
должно четко указывать "Я хочу проверить, равен ли это значение нулю или нет" и позволить компилятору быть счастливым
Используйте!! идиома eg
bool CBase::isNumber()
{
return !!(id & MID_NUMBER);
}
Где объявление id и MID_NUMBER? Вы уверены, что они не BOOLs в стиле windef, а не (строчные) bool? BOOL были на ветру в течение десятилетий typedef'd как int; они предписывают правильный С++ bool, и многие разработчики все еще используют их.