在 .mm 文件中
#import "OCClass.h"
#import "CPPClass.h"
@interface OCClass()
@property (nonatomic, readwrite) CPPClass* cppClass;
@end
@implementation OCClass
-(void*)getObject
{
return cppClass;
}
@end
getObject方法是一个public方法,定义在header中,我想返回类型为CPPClass*的cppClass对象,而不是void*。但我不能在 objective-c header 中包含 cpp header 。我该怎么办?
最佳答案
您可以在您的 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。
关于c++ - 如何在 Objective-C 函数中返回一个 C++ 指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25819233/