2012-07-27 71 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

相關問題