UE4 における enum class の「フラグ」化
// ↓ブループリントで使わない場合はこの1行は不要 UENUM( BlueprintType, meta=( Bitflags ) ) enum class EHoge: uint8 { EV_Nothing = 0 , EV_Flag1 = 0x01 , EV_Flag2 = 0x02 , EV_Flag3 = 0x04 , EV_Flag4 = 0x08 , EV_FlagAll = EV_Flag1 | EV_Flag2 | EV_Flag3 | EV_Flag4 }; // ↑ こんな enum class に ↓ このマクロを通しておく(今回の本題) ENUM_CLASS_FLAGS( EHoge )
ENUM_CLASS_FLAGS
マクロに通しておくと、 EHoge
で次のようなフラグ計算でお馴染みの機能についてユーザー独自に定義したり、
underlying_type_t
に static_cast
して云々など必要なくなり、楽ができるようになる。
auto a = EHoge::Nothing; // フラグ追加 a |= EHoge::EV_Flag3; // フラグ判定 auto result_of_any = ( a & EHoge::EV_FlagAll ) != EHoge::EV_Nothing;