全部
由于位掩码枚举值限制(“版本”和“硬件”可以容纳的最大项目数为 32), 我想改变“硬件”的数据结构。在当前代码中,“Hardwares”类型是存储硬件值的组合(QFlags:https://doc.qt.io/qt-5/qflags.html),它有像^=,|=这样的运算符和用于位掩码操作的函数testFlag()。是否有任何数据结构(类型)可以轻松完成相同的事情?谢谢。
QT C++ 代码:
enum Version
{
undefine = 0x00000000, //change to 0,1,2,3
xxxxx400 = 0x00000001,
xxxxx401 = 0x00000002,
xxxxx410 = 0x00000004,
}; Q_DECLARE_FLAGS(Versions, Version)
enum Hardware
{
Undefined = 0x00000000, //change to 0,1,2,3
H1 = 0x00000001,
H2 = 0x00000002,
H3 = 0x00000004,
}; Q_DECLARE_FLAGS(Hardwares, Hardware)
struct Settings
{
Version verNum ;
Hardwares supportedHW ;
} ;
const Settings gSettings[] =
{
{ xxxxx400, H1|H2|H3 },
{ xxxxx401, H1|H3 },
} ;
if(Hardwares.testFlag(hardware)
versions ^= gSettings[i].verNum;
Versions |= gSettings[i].verNum;