나는 커스텀 QFlags 구현을 사용할 때 왜 비트 연산 연산 오류가 발생합니까?
class A
{
...
enum class PrimitiveTypeFlag : unsigned int {
Unknown = 0x0,
Bool = 0x1,
Float = 0x2,
Double = 0x4,
Int8 = 0x8,
UInt8 = 0x10,
Int16 = 0x20,
UInt16 = 0x40,
Int32 = 0x80,
UInt32 = 0x100,
Int64 = 0x200,
UInt64 = 0x400,
StatsDataArray = 0x800,
NeighborList = 0x1000,
StringArray = 0x2000,
NumericalPrimitives = 0x07FE,
Any = 0x3FFF
};
Q_DECLARE_FLAGS(PrimitiveTypeFlags, PrimitiveTypeFlag)
...
...
};
Q_DECLARE_OPERATORS_FOR_FLAGS(A::PrimitiveTypeFlags)
내가 PrimitiveTypeFlags의 인스턴스를 인스턴스화
은, 모든 플래그가 켜져 내 자신의 사용자 정의 QFlags 열거를 ... 만들었습니다. 단순히~A::PrimitiveTypeFlag::StringArray
을 실행하면
invalid argument type 'A::PrimitiveTypeFlag' to unary expression.
, 나는 또한 동일한 오류가 발생합니다 : 난은 StringArray 플래그를 해제하려면 위의 코드 블록을 실행하면
A::PrimitiveTypeFlags pFlags;
pFlags.setFlag(A::PrimitiveTypeFlag::StringArray, false);
, 나는이 오류가 발생합니다.
이 오류가 발생하는 이유는 무엇이며 어떻게 수정합니까?
미리 감사드립니다.
버그, Qt 5.9.4 (아마도 5.10.1)로 고정되었습니다. – peppe