使用Lua和SWIG並說IInterface類可以實現該接口並在Lua中實例化所有接口嗎?如果是這樣怎麼辦?使用SWIG實現和繼承Lua中的C++類
0
A
回答
0
存儲爲使用該API指定在C++類的表通過保持一個指針到LUA狀態,並且參考返回的表:
http://www.lua.org/pil/27.3.2.html
然後,當在包裝類的方法被稱爲,推參考對象到堆棧上,並做必要的功能調用
1
首先,C++風格的界面現在對於像Lua這樣的語言來說很有意義。對於符合接口的Lua對象,只需要包含該接口中所有函數的定義。不需要任何特定的繼承。舉例來說,如果你有一個C++接口這樣的:
// Represents a generic bank account
class Account {
virtual void deposit(double amount) = 0;
};
你可以在Lua實現它沒有任何具體的繼承規格:
SavingsAccount = { balance = 0 }
SavingsAccount.deposit = function(amount)
SavingsAccount.balance = SavingsAccount.balance + amount
end
-- Usage
a = SavingsAccount
a.balance = 100
a.deposit(1000)
總之,你並不需要C++接口。如果您需要從Lua擴展C++類的功能,則應該按照所述將它包裝到Lua對象中,並按照here的解釋執行「metatable」繼承。另請閱讀Lua手冊中的section on Object Oriented Programming。
相關問題
- 1. 在C++中使用繼承的具體類來實現接口
- 2. c繼承的實現
- 3. 在C++中繼承抽象類和類實現
- 4. PHP類,繼承,實現
- 5. 用C實現複雜的繼承++
- 6. SWIG C++/Python的:繼承代理對象
- 7. 實現繼承
- 8. C++繼承和實例化依賴類
- 9. 用SWIG包裝一個Lua對象以在C++中使用SWIG
- 10. 擴展類中的接口和抽象類的繼承,實現
- 11. C++使用繼承父類
- 12. 在codeigniter中實現類繼承
- 13. Singleton類和使用繼承
- 14. eclipselink繼承實現
- 15. 實現繼承與通用
- 16. 在MySQL中實現繼承
- 17. C#繼承和靜態類
- 18. C#嵌套類和繼承
- 19. C++繼承和類成員
- 20. C++泛型類和繼承
- 21. 繼承了在Lua
- 22. Lua模塊繼承
- 23. 類繼承C++
- 24. C#類繼承
- 25. 抽象類中的C++和繼承
- 26. C++類的繼承
- 27. c#類的繼承
- 28. 存儲庫模式的通用接口繼承和類實現
- 29. C++中的類繼承?
- 30. C#中的繼承/類#
我知道本教程,它不實現我想要的。它告訴我,從C++類A繼承的C++類B仍然可以在lua中使用。 但它不會告訴我如何聲明和實例lua類C繼承自C++類B? – 2009-11-23 13:02:40
@Tom J Nowell我已經更新了答案。 – 2009-11-23 13:36:50
嗯,我認爲,這裏的問題是以這種方式實現它,我將不得不使用函數在lua文件中實現它,再加上我自己的基於lua的對象處理程序。我已經有了一個C++對象處理程序,並且我寧願允許我的lua對象在這個現有基礎結構中工作,因爲這樣的額外層會剝去一噸體系結構的東西,從而大大增加區域的開銷。 – 2009-11-24 11:27:34