2010-10-19 34 views
1

我想在api樣式中有一個函數。但是實現必須在Objective-C lang上。所以我讀了一些信息,並決定做以下事情 - 將Objective-C與C++混合使用。並有問題在C++類中調用objC方法。這就是我的例子:objective-C++如何將方法添加到C++類

//MYClass.h : 

class CClass 
{ 
private: 
id fileName; 
BOOL rez; 
public: 
bool download(char* initial_file_name) 
{ 
    fileName = [[NSString alloc] initWithUTF8String:initial_file_name]; 
    // here I'd like to call my obj-c method 
    ObjCClass c = [[ObjCClass alloc] init] 
    rez = [c writeFile:fileName]; 
    if (rez == YES) 
    return true; 
    return false; 
} 
}; 

@interface ObjCClass: NSObject 
{ 
    CClass *cClass; 
} 

    - (BOOL) writeFile:(NSString *)fileName; 
@end 

這樣的事情..

回答

0

要創建的Objective-C類是錯誤的實例的線,還有一個「*」和「;」缺少,它應該是這樣的:

ObjCClass *c = [[ObjCClass alloc] init]; 

您還需要在C++類的前面加上一個向前聲明你的Objective-C類:

@class ObjCClass; 

這些變化應該讓代碼編譯,但你仍然會收到警告。爲了解決這些問題,您必須將Objective-C類移到開頭,然後再向前聲明C++類。

+0

太棒了!非常感謝! %) – Pavel 2010-10-20 08:36:11

+0

我得到了另一個問題:)我編譯這個代碼爲.dylib文件。創建一個應用程序,在項目中包含MYClass.h並且出現錯誤:objc_class_name引用自文字指針@__ OBJC @__ cls_refs @未找到main.o符號 - 如何解決此問題?當我包含我的.h文件時,它就會出現 – Pavel 2010-10-21 13:11:40