【问题标题】:Convert between objc integers and C++ enums in Objective C++ code在 Objective C++ 代码中的 objc 整数和 C++ 枚举之间进行转换
【发布时间】:2011-11-30 21:45:43
【问题描述】:

我有一个返回整数的 Objective C 选择器。我有一个需要枚举的 C++ 实例方法。我怎样才能链接它们?当我这样做时,我在一个 Objective C++ (.mm) 类中。

我想这样称呼:

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

用this的返回值:

- (int) intValue { ... }

像这样:

myCPPInstance->foo([myObjCInstance intValue]);

我尝试过投射 (foo((MyEnum) [myObjCInstance integerValue])) 但它不起作用。我绝对不希望我的 Objective C 对象知道有关枚举的任何信息; intValue 需要保持为整数。同样,我真的不想让 C++ 方法在它应该接受枚举时担心整数输入。

我不是一个 C++ 程序员,很抱歉,如果这很简单。

谢谢

编辑:枚举定义如下:

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

【问题讨论】:

  • 当您尝试foo((MyEnum) [myObjcInstance integerValue]) 时,会发生什么?
  • 编译器说“在消息发送表达式开始时缺少 [”
  • 天哪,这是一个命名空间问题。谢谢 Rob - 让我看看 all 编译器错误,而不仅仅是第一个。
  • 请将答案作为答案发布,而不是作为问题的更新。

标签: c++ objective-c enums


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-18
    • 2010-09-26
    相关资源
    最近更新 更多