如何解决如何按与值索引相关的项目索引返回枚举?
如何通过“项目索引”而不是“值索引”对枚举进行索引:
“价值索引”(对我正在做的事情没有用):
eSerialBauds eBaud = static_cast<eSerialBauds>(1200); // yields eBaud1200
我想要“项目索引”:(如何获得以下内容?)
eSerialBauds eBaud = static_cast<eSerialBauds>(3); // to yield eBaud1200
// values (from WinBase.h)
#define CBR_110 110
#define CBR_300 300
#define CBR_600 600
#define CBR_1200 1200
#define CBR_2400 2400
enum class eSerialBauds
{
eBaud110 = CBR_110,eBaud300 = CBR_300,eBaud600 = CBR_600,eBaud1200 = CBR_1200,eBaud2400 = CBR_2400,}
请注意,我从另一个班级获得了这个枚举班级。有许多。所以我必须用别人给我的东西来工作。
我确实写了一个变通方法,但如果有一种更优雅的方法来获得结果会很好。
解决方法
只需设置一个包含枚举值的数组,如下所示:
static const eSerialBauds bauds_by_index [] = { eBaud110,eBaud300,eBaud600,eBaud1200,eBaud2400 };
然后你可以这样做,例如:
eSerialBauds baud = bauds_by_index [3];
,
最简单的方法是构建一个枚举值数组。
static constexpr auto sBaudIndex = std::array{eBaud100,eBaud200,eBaud2400);
然后你索引那个数组。它很脆弱,但我知道没有办法让编译器为您枚举枚举值。
如果不需要,可以跳过 enum
,只需使用数组中的 WinBase 值
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。