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