我有两个相互并行的类。第一个是Room,第二个是Ship。在船上,我必须使用Room类来检查某些内容是否有效。我正在运行一个switch语句,因为我对不同的条目做了不同的事情。问题是从Room传入switch语句的定义变量是枚举,编译器不喜欢它。
这就是我所拥有的
bool Ship::checkRoom ( const Room& theRoom )
{
switch (theRoom.getType)
作为参考,这是调用“getType”的地方:
inline RoomType getType() const { return mType; };
答案 0 :(得分:1)
您可以将类枚举值传递给switch语句。但是你需要调用函数:
switch (theRoom.getType())
这是一个有效的例子:
enum class FOO { A, B };
struct Foo
{
FOO getFoo() const { return FOO::A; }
};
int main()
{
Foo f;
switch (f.getFoo())
{
case FOO::A:
case FOO::B:
break;
default:
break;
}
}
答案 1 :(得分:0)
您正在将函数传递给switch
,而不是enum
。因此,您应该调用该函数以在交换机中使用其返回值。
长话短说 - 你错过了括号。
switch (theRoom.getType)
需要
// --------------------vv
switch (theRoom.getType())
答案 2 :(得分:0)
您可以在C ++中启用枚举,因为它们是整数类型。实际上,它很有用,因为您可以在案例标签中使用枚举器值,这样可以使您的程序更清晰。
你所拥有的本质上是一个拼写错误:theRoom.getType
是函数的地址,具有你不应该打开的数据类型。
您需要使用switch (theRoom.getType())
。注意括号。