Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 比较枚举类型时出现逻辑错误_C++_Enums_Return_Conditional - Fatal编程技术网

C++ 比较枚举类型时出现逻辑错误

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

我试图比较两个枚举值,但在运行时它的计算结果似乎总是为true

表.h中的枚举声明,使用返回方法获取状态值:

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)