gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 21:46:19 38 4
gpt4 key购买 nike

我正在尝试比较两个枚举值,但在运行时它似乎总是评估为真。

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

enum TableStatus { IDLE, SEATED, ORDERED, SERVED};

class Table
{
private:
...
TableStatus status; // current status
public:
...
TableStatus getTableStatus(void);
}

在我需要比较枚举值的部分,我一直在尝试如下所示的条件:

if (tables[tableId]->getTableStatus() == TableStatus(SERVED))

我的问题是如何让这个逻辑起作用。因为将 Table 对象的状态与某个枚举值进行比较将正确评估。

编辑:包括 getTableStatus(void);

TableStatus Table::getTableStatus(void){
return status;
}

最佳答案

我在使用枚举时遇到了同样的困惑。有好几次我不得不查阅有关枚举的教程以确保我是正确的。每当我使用枚举编程时,我都会阅读这个 ( http://www.cprogramming.com/tutorial/enum.html) 教程。

基本上枚举 (C++98) 的行为不像类,所以你写的是不正确的。枚举可以直接引用,所以你必须这样写:

if (tables[tableId]->getTableStatus() == SERVED)

前提是您编写代码的枚举和函数在同一范围内。

如果您使用的是 C++11,enum classes 是更好的选择。我喜欢枚举类,因为我不会像以前对 C++98 枚举那样混淆它们。 http://www.cprogramming.com/c++11/c++11-nullptr-strongly-typed-enum-class.html

关于c++ - 比较枚举类型时出现逻辑错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15554965/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com