在XCODE中想使用C++代码,你须要把文件的扩展名从.m改成.mm。这样才会启动g++编译器。
我们来看个測试代码:
-
class TestC {
-
private:
-
NSString *str_;
-
-
public:
-
TestC() {
-
str_ = @"hi mc0066.";
-
}
-
TestC(NSString *str) {
-
str_ = str;
-
}
-
TestC(NSInteger num) {
-
str_ = [NSString stringWithFormat:@"%d",num];
-
}
-
void show() {
-
printf("%s\n",[str_ UTF8String]);
-
NSLog(@"str_ is:%@\n",str_);
-
}
-
};
这是我写的C++类,类内部使用了OC的代码。依据測试能够确定下面几点:
1. C++函数内能够调用OC方法、能够创建OC对象、函数參数能够为OC对象。
2. C++类的成员变量能够是OC对象。
事实上,在混编时,OC和C++的对象都是单纯的指针。所以能够随意的彼此调用对方的方法、使用对方的内部数据。
再来看看OC中是怎样使用C++代码的:
-
@interface TestOC : NSObject
-
{
-
TestC *c;
-
}
-
-
- (id)initTestOC;
-
- (void)testC;
-
-
@end
-
-
@implementation TestOC
-
-
- (id)initTestOC{
-
if ((self = [super init])) {
-
c = new TestC();
-
}
-
return self;
-
}
-
-
- (void)testC{
-
c->show();
-
}
-
-
- (void)dealloc{
-
delete c;
-
[super dealloc];
-
}
-
-
@end
和之前分析c++类没啥差别,毅然是能够使用c++的语法 能够使用c++的方法和成员。
另一点要注意,OC类无法继承C++类,C++也一样。
由于oc类的结构和c++类结构不同,所以才导致该问题。
|
请发表评论