gpt4 book ai didi

c++ - 枚举、类、命名空间和长名称

转载 作者:太空狗 更新时间:2023-10-29 20:01:55 26 4
gpt4 key购买 nike

据我了解,与类相关的枚举应该在类内部声明,如下所示:

namespace Sensors {
class MySensor {
public:
enum class SensorStatus {
kSensorActive,
kSensorInactive
}
SensorStatus GetCurrentStatus(void);
};
}

我遇到的问题是,它会导致程序另一部分出现以下代码。

 Sensors::MySensor::SensorStatus current_status = mySensor.GetStatus();
switch (current_status):
case Sensors::MySensor::SensorStatus::kSensorActive: // 47 characters!
printf("Sensor is active.");
break;
case Sensors::MySensor::SensorStatus::kSensorInactive: // 49 characters!
printf("Sensor is inactive.");
break;

我很清楚 kSensorActivekSensorInactive 指的是什么,没有歧义。但是,如果您尝试遵循指定 80 个字符的样式指南,我们最终会出现很多换行符,这会降低清晰度,恕我直言。如果我们有一个函数需要两个不同的枚举器,那么就会出现长行的一个例子; MyFunction(NamespaceA::MyFirstClass::MyFirstEnum::AnEnumerator, NamespaceB::MySecondClass::MySecondEnum::ADifferentEnumerator) - 多达 127 个字符。

这些长名称很常见还是我遗漏了什么?

最佳答案

首先,你重复一些东西:

名称 kSensorActive 不必说 Sensor 如果您已经在名称中指定它是 SensorStatus。或者您可以从 SensorStatus 中删除 Sensor(如果它位于 MySensor 中)。也许两者都有。

将事物包装在类和命名空间中的想法是,您可以针对“同一类事物”一遍又一遍地使用相同的名称,而不是始终使用完全唯一的名称。

你也可以在本地使用 using 更改名称,就像这样

using Status = Sensors::MySensor::SensorStatus;

然后我们 Status::kSensorActive 之前使用长的东西。

关于c++ - 枚举、类、命名空间和长名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49686763/

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