fflua 發佈了有段時間了,不少網友都用了,而且提供了一些很好的反饋。其中一個就是c++接口註冊到lua中時,對引用的支持。這樣使用起來更加方便。html
fflua 中註冊c++的類用以下方式: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++的接口:git
void dumy_base(base_t* p) { printf("in %s begin ------------\n", __FUNCTION__); } fflua_register_t<>(ls).def(&dumy, "dumy"); //! 註冊靜態函數
有網友跟我反映,原來的接口不少都是使用引用做爲參數,爲了接收lua傳過來的參數,還得須要從新寫一個函數,比較麻煩,因而fflua增長了對引用的支持:github
void dumy_base(base_t& p) { printf("in %s begin ------------\n", __FUNCTION__); } fflua_register_t<>(ls).def(&dumy, "dumy"); //! 註冊靜態函數
最新代碼:函數