gpt4 book ai didi

c++ - 在 C++ 中使用类和枚举

转载 作者:行者123 更新时间:2023-11-28 05:43:30 25 4
gpt4 key购买 nike

努力寻找在 C++ 中实现类和枚举的正确方法。

class CrossingGateRoad {
public:
boolean PowerOn(byte relayNumber) {
digitalWrite(relayNumber, RELAY_ON);
return true;
}
boolean PowerOff(byte relayNumber) {
digitalWrite(relayNumber, RELAY_OFF);
return true;
}
};

然后我尝试创建一个枚举,如下所示:

enum {
CROSSINGZONE_CLEAR, // no train in crossing area, also initialized state
CROSSINGZONE_OCCUPIED, // train detected by the entry sensor
CROSSINGZONE_EXITING // train detected by the exit sensor, when sensor clears, state = CLEAR
};

在 C# 中,我会命名我的枚举并指定值:

public enum CommodityIndexSector
{
Currency = 1,
StockIndex = 2,
GovernmentBond = 3,
Metals = 4,
Energy = 5,
Grains = 6,
Softs = 7,
Meats = 8,
Other = 9
}

我会像这样访问它.... enumname.enumvalue。我也不是 100% 确定类(class)看起来正确。

最佳答案

在 C++ 中,enum 值出现在它们的外部范围内。如果你有

enum {
CROSSINGZONE_CLEAR, // no train in crossing area, also initialized state
CROSSINGZONE_OCCUPIED, // train detected by the entry sensor
CROSSINGZONE_EXITING // train detected by the exit sensor, when sensor clears, state = CLEAR
};

几乎等同于具有 #define 值。

要在其他地方指定枚举类型,您需要为其命名:

enum CrossingZones {
// ^^^^^^^^^^^^^
CROSSINGZONE_CLEAR, // no train in crossing area, also initialized state
CROSSINGZONE_OCCUPIED, // train detected by the entry sensor
CROSSINGZONE_EXITING // train detected by the exit sensor, when sensor clears, state = CLEAR
};

你可以引用具体的枚举类型:

CrossingZones crossingZones = CROSSINGZONE_CLEAR;

关于值的更直观的声明,是按照当前标准使用枚举类:

enum class CrossingZones {
// ^^^^^
CROSSINGZONE_CLEAR, // no train in crossing area, also initialized state
CROSSINGZONE_OCCUPIED, // train detected by the entry sensor
CROSSINGZONE_EXITING // train detected by the exit sensor, when sensor clears, state = CLEAR
};

并在范围内使用它们:

CrossingZones crossingZones = CrossingZones::CROSSINGZONE_CLEAR;
// ^^^^^^^^^^^^^^^

关于c++ - 在 C++ 中使用类和枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36669114/

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