gpt4 book ai didi

objective-c - 如何在 Objective-C++ 中返回 C++ 指针

转载 作者:行者123 更新时间:2023-12-03 16:27:53 25 4
gpt4 key购买 nike

我有以下 Objective-C++ header ,其中包含返回此指针的简单方法。

@interface MyObj
{
MyCPPObj * cpp;
}
-(MyCPPObj *) getObj;

我创建了简单的方法

@implementation MyObj
-(MyCPPObj *) getObj
{
return cpp;
}

一切似乎都有效,直到我真正尝试在另一个文件中使用该对象

newObj = [createdMyObj getObj];

它提示:错误:无法在初始化中将“objc_object*”转换为“MyCPPObje *”。

看起来该方法返回一个objective-c对象,但我特别要求一个C++指针。

MyCPPObj 是一个诚实的 C++ 类:

class MyCPPObj
{
public:
int x;
}

我该如何解决这个问题?

最佳答案

在我的 10.6.3 机器上,以下组合可以正常工作:aho.h

#import <Foundation/Foundation.h>
class MyCPPObj{
};
@interface MyObj:NSObject
{
MyCPPObj * cpp;
}
-(MyCPPObj *) getObj;
@end

aho.mm

#import <Foundation/Foundation.h>
#import "aho.h"

void foo(){
MyObj*objcObj=[[MyObj alloc] init];
MyCPPObj*cppObj=[objcObj getObj];
}

您可能陷入的两个陷阱:

  1. 与 C++ 不同,Objective-C 中的类不继承自 NSObject行不通的。 (嗯,你可以让它工作,但你通常不希望这样。)注意行 @interface MyObj:NSObject .
  2. 使用 NSObject ,做#import <Foundation/Foundation.h>
  3. 不要忘记使用扩展名 .mm用于 Objective-C++ 文件。

关于objective-c - 如何在 Objective-C++ 中返回 C++ 指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2626309/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com