C++ 比较枚举类型时出现逻辑错误
我试图比较两个枚举值,但在运行时它的计算结果似乎总是为true 表.h中的枚举声明,使用返回方法获取状态值:C++ 比较枚举类型时出现逻辑错误,c++,enums,return,conditional,C++,Enums,Return,Conditional,我试图比较两个枚举值,但在运行时它的计算结果似乎总是为true 表.h中的枚举声明,使用返回方法获取状态值: enum TableStatus { IDLE, SEATED, ORDERED, SERVED}; class Table { private: ... TableStatus status; // current status public: ... Ta
enum TableStatus { IDLE, SEATED, ORDERED, SERVED};
class Table
{
private:
...
TableStatus status; // current status
public:
...
TableStatus getTableStatus(void);
}
在需要比较枚举值的部分中,我尝试了如下条件:
if (tables[tableId]->getTableStatus() == TableStatus(SERVED))
我的问题是如何让这种逻辑发挥作用。在这种情况下,将表对象的状态与某个枚举值进行比较将正确计算
编辑:包括getTableStatus(作废)
我在使用enum时也遇到了同样的困惑。有好几次,我不得不查阅有关枚举的教程,以确保我的正确性。每当我使用enum编程时,我都会阅读这个()教程 基本上,枚举(C++98)的行为不像类,所以您所写的是不正确的。 枚举可以直接引用,因此您必须编写:
if (tables[tableId]->getTableStatus() == SERVED)
假设枚举和编写代码的函数在同一范围内
如果您使用的是C++11,enum类
是一个更好的选择。我喜欢枚举类,因为我不会像以前使用C++98枚举那样对它们感到困惑。
您显示的代码对于您描述的任务是正确的。如果
getTableStatus()
总是返回SERVED
,则在其他地方会出现错误。感谢您的快速响应。
if (tables[tableId]->getTableStatus() == SERVED)