fat*_*cat 12 c++ import include objective-c++ ios
我有一个.cpp/.hpp文件组合 - > .hpp文件有#include ..
我也有一个.mm/.h文件组合 - >如果我在.mm目标C++文件中包含.hpp文件,则没有问题.但是,如果我尝试在.h(Objective C标头)文件中包含.hpp文件,我会收到预处理器问题'找不到iostream'.
除了做一些时髦的东西,比如在我的Objective C .h文件中有一个void*然后把它作为包含在.mm中的类型或者包装在Objective C++类型中的每个C++类型之外,还有什么方法吗?
我的问题与托尼的问题基本相同(但没有人回答他):
Joe*_*Joe 20
问题是您必须避免标头中的所有C++语义,以允许普通的Objective-C类包含它.这可以使用不透明指针来完成.
class CPPClass
{
public:
int getNumber()
{
return 10;
}
};
Run Code Online (Sandbox Code Playgroud)
//Forward declare struct
struct CPPMembers;
@interface ObjCPP : NSObject
{
//opaque pointer to store cpp members
struct CPPMembers *_cppMembers;
}
@end
Run Code Online (Sandbox Code Playgroud)
#import "ObjCPP.h"
#import "CPPClass.h"
struct CPPMembers {
CPPClass member1;
};
@implementation ObjCPP
- (id)init
{
self = [super init];
if (self) {
//Allocate storage for members
_cppMembers = new CPPMembers;
//usage
NSLog(@"%d", _cppMembers->member1.getNumber());
}
return self;
}
- (void)dealloc
{
//Free members even if ARC.
delete _cppMembers;
//If not ARC uncomment the following line
//[super dealloc];
}
@end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12774 次 |
| 最近记录: |