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

标签 c++ objective-c

在 .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/

相关文章:

iphone - NSString 解析

ios - 如何在巨大的 CollectionView 中使用 SDWebImage 或 AFNetworking 在磁盘上缓存图像?

iphone - 用数据填充 TableView 部分 ??

iphone - NSTimer 的“for”循环错误

iphone - 删除 UITableView 中 2 个部分之间的标题空间

c++ - 当使用静态成员将共享库静态链接到可执行文件时,我在 UNIX 和 WIN 上收到不同的结果。请解释为什么?

c++ - 让默认构造函数和初始化列表并排工作

c++ - 傻瓜式 PCAP Web 服务使用日志记录

c++ - 通过套接字进行数据传输[TCP]如何在c/c++中打包多个整数并使用send()recv()传输数据?

c++ - 当 use_cout() == 1 时 shared_ptr 没有被销毁