3
A
回答
3
我認爲最好的辦法是提供圍繞C++庫的C包裝。當我用C++進行編程時,這在10年或更早的時候非常流行,但我不知道它是否已經完成了。
基本上,對於每class C
,對於每一個構造ctor
暴露於創建extern "C" CPtr cCtor(....)
方法,它返回一個不透明的指針CPtr
和爲每個函數func
暴露創建extern "C" cFunc(CPtr,....)
另一種方法是創建一個CStruct
它具有函數指針類型的成員變量,實現它們以調用類方法並讓客戶端完成所有艱苦的工作。
4
我不這麼認爲。使用名稱修飾,以便每個重載函數具有與鏈接器查看的名稱不同的名稱。
你可以用C重寫它們,並使用extern "C" {}
構造,但你會失去所有漂亮的繼承,多態等等。你也可以將C++封裝在C函數中,只公開C函數。
2
我能想到的唯一方法是將函數聲明爲extern「C」。鏈接器需要名稱修改來區分例如通過它們的參數列表來重載函數(如果不是用於名稱修飾,則鏈接器將不可用)。
0
虛擬功能將是我認爲的答案,你有沒有注意到COM,創建一個實例,它給你一個指向該接口的指針表示爲類。我猜這個聲明的方法不是按名字解決的,而是按槽位索引解決的。
相關問題
- 1. CField類的成員函數IsDirty名稱
- 2. C++中相同的類成員名稱和函數參數名稱
- 3. 改變其他類的對象狀態的成員函數
- 4. 模板類中成員函數的C++名稱解析
- 5. C++改變從靜態成員函數
- 6. 不允許任何成員函數在C++類中更改其數據成員
- 7. C++ - 通過成員函數更改一個類的成員值
- 8. C++:爲成員函數的變異和非變異版本建議名稱
- 9. C++分配成員的目標函數,類成員函數
- 10. C++靜態成員函數及其範圍
- 11. 名稱查找成員函數
- 12. 類型名稱後的預期成員名稱或構造函數調用
- 13. 在Python中,如何獲取成員函數類的名稱?
- 14. C++析構函數的成員變量?
- 15. C++模板類成員函數,依賴於其他模板類
- 16. javascript更改函數參數變量名稱並返回其值
- 17. C++新手類的成員函數
- 18. C++中的類成員函數指針
- 19. '靜態'的C++類成員函數?
- 20. 函數參數名稱和類變量名稱的區別
- 21. 如何從成員函數中賦予類的成員變量
- 22. 全局變量修改的const成員函數,其中通過全局函數
- 23. 從評估的JS獲取函數名稱及其參數Rhino
- 24. 使用C++類的成員函數爲C回調函數
- 25. C++模板指針與成員函數的簽名和類型
- 26. 類成員變量,方法及其狀態
- 27. C++可變參數類模板和成員函數
- 28. 調用成員C++的功能,但C函數具有相同的名稱
- 29. 函數來改變不同擴展類型的名稱文件
- 30. C++指針模板函數類成員
但你爲什麼要這樣做? – 2009-02-23 07:25:22