2012-07-27 52 views

回答

0

是的,这是可能的。我正在开发一个OS X应用程序,它有30个.mm文件和没有.m文件。但.mm文件是Objective-C++,而不是C++(.cpp)。

下面是一个使用一个Objective-C++类内的C++类(在cppclass.h定义)(定义/在mmclass.{h,mm}声明)的一个例子:

cppclass.h:

#include <string> 

class MyCppClass 
{ 
protected: 
    std::string _name; 

public: 
    MyCppClass() : 
     _name() 
    { 
    } 

    void setName(const std::string &name) 
    { 
     _name = name; 
    } 
}; 

mmclass.h:

#import <Foundation/Foundation.h> 
#import "cppclass.h" 

@interface MyMMClass : NSObject 
{ 
    MyCppClass _myCppClass; 
} 

@end 

mmclass.mm:

#import "mmclass.h" 

@implementation MyMMClass 

- (id)init 
{ 
    self = [super init]; 
    if (self != nil) 
    { 
     _myCppClass.setName("Andy"); 
    } 
    return self; 
} 

@end 
+0

我改变了只是扩展名.mm然而在文件内我正在使用正常的C + +概念我已经创建类像类样本{...}这样的。在这种情况下,你认为它有可能吗? – Feroz 2012-07-27 08:33:04

+0

@FerozMohideen是的,但如果它们是纯粹的C++,为什么不使用文件扩展名'.cpp'?对于实际的UI类,您一定会使用扩展名“.mm”。 – trojanfoe 2012-07-27 09:02:21

+0

你有什么想法如何在目标C文件中创建cpp实例变量。如果我在@inteface中声明了任何对象,则会显示很多错误。我们可以这样做吗? – Feroz 2012-07-27 09:23:33

相关问题