【发布时间】:2018-04-27 12:22:03
【问题描述】:
基本上,我们在 QVariant::Type 的变量中跟踪对象类型,然后做类似的事情
switch(values[i].type)
{
case QVariant::Bool: logic; break;
case QVariant::Int: logic; break;
case QVariant::LongLong: logic; break;
case QVariant::String: logic; break;
case QVariant::Double: logic; break;
case QVariant::DateTime:
case QVariant::Date:
case QVariant::Time: logic; break;
case QVariant::User+1:
{
logic;break;
}
case QVariant::User+2:
{
logic;break;
}
default: break;
}
问题是:gcc 会为 User+X 语句产生如下警告:
warning: case value ‘1025’ not in enumerated type ‘QVariant::Type’ [-Wswitch]
现在,我当然可以压制它,但这是推荐的方式还是我在这里做的根本错误?
附:问题不在于为什么会产生警告:我明白为什么。问题更多地是关于以适当的方式将 QVariant::Type 与用户类型一起使用,如果简单地抑制是正确的,或者我在这里做什么是完全错误的,并且警告表明存在更大的设计决策问题。
【问题讨论】:
-
也许您正在使用
-Wswitch-enum标志进行编译? -
我正在使用 -Wall -Wextra 进行编译。所以,如果我想保留这些(其他相关的)警告,你建议我只是压制?