2011-11-30 57 views
3

我有一个Objective C选择器返回整数。我有一个C++实例方法,期望一个枚举。我如何链接它们?我在做一个Objective C++(.mm)类的时候。目标C++代码中的objc整数和C++枚举之间的转换

我想称之为:

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

随着该返回值:

- (int) intValue { ... } 

像这样:

myCPPInstance->foo([myObjCInstance intValue]); 

我试过铸造(foo((MyEnum) [myObjCInstance integerValue])),但它不起作用。我绝对不希望我的Objective C对象知道枚举的任何内容; intValue需要保留为整数。同样,我真的不想让C++方法在接受枚举时担心整数输入。

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

感谢

编辑:枚举的定义是这样的:

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

当你尝试'foo((MyEnum)[myObjcInstance integerValue]),会发生什么? –

+0

编译器说“缺少[在消息发送表达式的开始” –

+0

哦,这是一个命名空间问题。感谢罗布 - 让我看看所有的编译器错误,而不仅仅是第一个。 –

回答

2

这是一个命名空间的问题。演员应该是:

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