精華區beta MacDev 關於我們 聯絡資訊
※ 引述《RichieRich (Richie)》之銘言: : 請問副檔名.m是不是無法存取 std 的 : .cp 的東西無法存取cocoa ns的東西? : 請問還是有啥解決方式? 我猜,你要問的是: 1. 怎樣在Objective-C的程式中,存取C++的程式碼? 2. 怎麼在C++中,存取Objective-C的程式碼? 關於第一點,請將副檔名改成.mm 至於第二點,你恐怕得將Objective-C的程式,先用一個C++的類別包起來, 然後再由別的C++檔案去存取,像是下面: //Objective-C header, MyObject.h @interface MyObject: NSObject { //...blahblah } - (void)myMethod:(int)parameter; //...blahblah @end //Obj-C實作省略。 //Objective-C++ ,C++ style class, MyWrapper.h class MyObject; class MyWrapper { public: MyWrapper(); ~MyWrapper(); void myMethod(int parameter); private: MyObject* myObject; }; //Objective-C++, implementation, MyWrapper.mm //建構,解構省略 MyWrapper::myMethod(int parameter) { if(myObject) { [myObject myMethod:parameter]; } } 然後在你真正用到的地方使用wrapper: //Somewhere at XXX.cp int XXX::someFunction() { MyWrapper* wrapper = new MyWrapper; wrapper->myMethod(123); delete wrapper; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.84.252.229
RichieRich:感謝 明天試試看 05/12 20:29