fflua 發布了有段時間了,很多網友都用了,並且提供了一些很好的反饋。其中一個就是c++接口注冊到lua中時,對引用的支持。這樣使用起來更加方便。
fflua 中注冊c++的類用如下方式:
class base_t { public: base_t():v(789){} void dump() { printf("in %s a:%d\n", __FUNCTION__, v); } int v; }; //! 注冊基類函數, ctor() 為構造函數的類型 fflua_register_t<base_t, ctor()>(ls, "base_t") //! 注冊構造函數 .def(&base_t::dump, "dump") //! 注冊基類的函數 .def(&base_t::v, "v"); //! 注冊基類的屬性
當c++類注冊成功,後lua代碼中可以操作類對象的指針,並且可以作為參數傳遞給c++的接口:
void dumy_base(base_t* p) { printf("in %s begin ------------\n", __FUNCTION__); } fflua_register_t<>(ls).def(&dumy, "dumy"); //! 注冊靜態函數
有網友跟我反映,原來的接口很多都是使用引用作為參數,為了接收lua傳過來的參數,還得需要重新寫一個函數,比較麻煩,於是fflua增加了對引用的支持:
void dumy_base(base_t& p) { printf("in %s begin ------------\n", __FUNCTION__); } fflua_register_t<>(ls).def(&dumy, "dumy"); //! 注冊靜態函數
最新代碼:
https://github.com/fanchy/fflua