如何在objective-c函数中返回一个c++指针

how to return a c++ pointer in objective-c function

本文关键字:一个 指针 c++ 返回 objective-c 函数      更新时间:2023-10-16

In.mm文件

#import "OCClass.h"
#import "CPPClass.h"
@interface OCClass()
@property (nonatomic, readwrite) CPPClass* cppClass;
@end
@implementation OCClass
-(void*)getObject
{
    return cppClass;
}
@end

getObject方法是一个公共方法,它在头中定义,我想返回cppClass*而不是void*类型的cppClass对象。但是我不能在objective-c头中包含cpp头。我该怎么办?

您可以在Objective-C.h文件中转发声明C++类:

// OCClass.h
#import <Foundation/Foundation.h>
class CPPClass;
@interface OCClass : NSObject
-(CPPClass*)getObject;
@end

这样,您就不必在Objective-C.h文件中包含C++.h文件,而且所有内容都可以正确编译和工作。(注意,您只能将这个头文件#import转换为.mm文件。)此外,您的getObject方法应该是:

-(CPPClass*)getObject
{
    return self.cppClass;
}

-(CPPClass*)getObject
{
    return _cppClass;
}

这取决于您是否要调用getter。