在Objective c++代码中转换objc整数和c++枚举

Convert between objc integers and C++ enums in Objective C++ code

本文关键字:c++ 整数 objc 枚举 Objective 代码 转换      更新时间:2023-10-16

我有一个Objective C选择器返回整数。我有一个c++实例方法,它需要一个枚举。我怎么把它们联系起来?当我这样做的时候,我在一个Objective c++ (.mm)类中。

我想把它命名为:

TKClass::foo(MyEnum enumVal) { ... }

使用this的返回值:

- (int) intValue { ... }

:

myCPPInstance->foo([myObjCInstance intValue]);

我试过铸造(foo((MyEnum) [myObjCInstance integerValue])),但它不起作用。我绝对不希望我的Objective - C对象知道enum的任何信息;intValue需要保持为整数。类似地,当c++方法应该接受枚举时,我也不想让它担心整数输入。

我不是一个很好的c++程序员,所以很抱歉,如果这很容易。

感谢

编辑:枚举定义如下:

enum MyEnum { 
   Apples = 0,
   Bananas = 1,
   Chocolate = 2
};

这是一个命名空间问题。cast应该是:

myCPPInstance->foo((myNamespace::MyEnum) [myObjCInstance intValue]);