Cocoa 使用 typedef-ed 匿名枚举位域。
我正在使用 Objective-C++,无论好坏。在 .mm 文件中,我需要将 2 位(按位包含 OR)分配给这些枚举位域类型之一的类型的属性。libc++ 编译器不会拥有它,因为它不会将 int 类型的右值赋予该 typedef-ed 匿名枚举位域的属性。
我知道 C 和 C++ 之间存在枚举的大小差异。那么这种情况的解决方法是什么?
我执行任务的线路类似于:
uiSwipeRightDownRecogniser.direction = Right | Down;
位域的定义类似于:
typedef enum
{
Right = 1 << 0,
Left = 1 << 1,
Up = 1 << 2,
Down = 1 << 3
} UISwipeDirection;
错误是:
无法使用“int”类型的右值初始化“UISwipeDirection”类型的参数
这种分配适用于.m文件,但不适用于.mm。
编译器是 Apple 的 LLVM 3.0(使用 libc++)。