2010-06-19 46 views
1

我試圖找出註冊我的C++和Lua類的構造函數的最佳方式(從軟件設計的角度來看,編碼的角度看)正確的軟件工程方法使Lua綁定到我的C++類中?

我將如何做到這一點?

我的想法:

1)做出某種「初始化的Lua綁定」文件的結合每一個我想在Lua有可用的C++構造函數? (問題:這個文件往往會越做越大,難以同步/調試)

2)每個類是RESPONSABLE註冊它自己的構造與我「LuaManager」 類(問題:它會是愚蠢的相同構造到Lua一遍又一遍結合的一種A的同一個班級,因此理想情況下,每個腳本化類應該將它綁定使用這種方法時的構造和Lua只有一次。)

思路,或者意見非常受歡迎。

回答

1

我明白你問

從軟件設計的角度來看, 沒有編碼的角度看

但我不知道有這兩者之間明顯的區別是什麼意思。或者,更準確地說,您採用的編碼方式將決定您的設計選項。例如,如果您使用SWIG,則由於您編寫了一個單獨的「接口」文件,因此您的問題中的選項並不合理。如果你使用的是luabind,這些選項確實有意義,但是我肯定會選擇1),因爲luabind頭文件會大大減慢編譯速度,所以我希望它們儘可能少地包含在編譯單元中。如果你的「編碼」方法沒有這個缺點,那麼2)似乎是更明智的做法。

0

你的第二種方法可以很好地工作。避免多次註冊的一種方法是使用靜態初始化列表方法。每個類將添加一個Lua註冊函數到靜態std :: set pre-main。然後,當你的應用程序啓動時,你會走這個std :: set,並將每個類構造函數綁定到你的Lua運行時。這將確保您的類綁定僅註冊一次。

+0

看起來很有趣,你能給我更多的細節嗎? 謝謝。 – Goles 2010-08-19 15:12:26

相關問題