我在C ++中尝试切换案例和继承,并发现了一些问题/警告。
例如,我有一个抽象的基本类Field:
STR
现在我在子类Buildings.cpp和Properties.cpp中收到警告:
text
因为它是一个bool我只能在默认情况下返回false或true并且该方法不会正常工作或? 我只想查看一下Building.cpp中的Home和Townhall以及Properties中的Grass,Water和street。
Field.h
class Field{
private:
FieldType type_;
public:
enum FieldType
{
GRASS,WATER,STREET,HOME,TOWNHALL
};
virtual bool checkIsBuildable(Fieldtype type);
答案 0 :(得分:5)
您需要添加default
:return true
;或return false
;在这种情况下;
bool Properties::isBuildable(Field::FieldType type)
{
switch(type)
{
case Field::GRASS:
return true;
case Field::WATER:
return false;
case Field::STREET:
return false;
default:
return false;
}
}
或者只是添加退出交换机范围:
bool Properties::isBuildable(Field::FieldType type)
{
switch(type)
{
case Field::GRASS:
return true;
case Field::WATER:
return false;
case Field::STREET:
return false;
}
return false;
}
因为如果你的类型不等于case中的一个值,那么函数将不会返回任何值,你需要借助上面显示的方法来修复它。