Cocoaは、typedefされた匿名の列挙型ビットフィールドを利用します。
善かれ悪しかれ、objective-C++を使用しています。.mmファイル内で、これらの列挙型ビットフィールドタイプのいずれかのタイプのプロパティに2ビット(ビット単位のORを含む)を割り当てる必要があります。libc ++コンパイラは、typedefされた匿名列挙型ビットフィールドのプロパティにint型の右辺値を与えないため、これを備えていません。
CとC++の間で列挙型のサイズに違いがあることを理解しています。では、この状況の回避策は何ですか?
割り当てを実行する私の行は、次のようなものです。
uiSwipeRightDownRecogniser.direction = Right | Down;
ビットフィールドの定義は次のようになります。
typedef enum
{
Right = 1 << 0,
Left = 1 << 1,
Up = 1 << 2,
Down = 1 << 3
} UISwipeDirection;
エラーは次のとおりです。
タイプ'UISwipeDirection'のパラメーターをタイプ'int'の右辺値で初期化できません
この種の割り当ては.mファイルでは機能しますが、.mmでは機能しません。
コンパイラはAppleのLLVM3.0(libc ++を使用)です。