我有一個C++庫(僅限.h),它包含數據結構的實現,我想在我的iPhone應用程序中使用它。如何在Objective-C中包裝C++庫?
首先,我在Objective-C++中編寫了一個封裝器,作爲一個類,通過組合,它擁有一個C++類的ivar。然後我'有義務'將包裝類的擴展名更改爲.mm
,看起來很好。但之後我必須將這個包裝的類文件包含到其他幾個文件中,所以我必須更改它們的擴展名(以防止編譯時錯誤)。
我正確嗎?有沒有辦法將.mm擴展名限制在只有幾個文件?(以防止名稱衝突等)
編輯:一些更多的信息可能有所幫助,我使用LLVM 1.5作爲編譯器(我注意到編譯時錯誤的數量從GCC 4.2到LLVM 1.5有所不同,但我不確定這意味着多少,因爲我沒有看到它們全部)
我不認爲這是個好主意。任何包含此頭文件的非C++文件都不會「看到」受保護的成員,因此對於類和實例變量的不同偏移量將具有不同的大小。 – 2010-09-26 18:28:37
@Kristopher,使用現代Objective-C運行時(這是iOS上的唯一選項),實例變量非易碎,這不是問題。 – 2010-09-26 18:29:27
@Barry Wark ty Barry這似乎是對我來說最簡單的方式,但似乎我無法實現這一點,因爲我得到編譯時錯誤http://pastebin.com/tp9Zjhss好像我錯過了一些東西,我想他們可能是模板,但在你的鏈接中使用它們。 – rano 2010-09-26 19:04:16