小编cod*_*dey的帖子

在C++中使用由iOS本机库公开的C位掩码(匿名枚举)

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 ++).

c c++ cocoa bitmask objective-c++

5
推荐指数
1
解决办法
869
查看次数

标签 统计

bitmask ×1

c ×1

c++ ×1

cocoa ×1

objective-c++ ×1