luaTinkerlua 的封裝
LuaTinker 的作者是Kwon-il Lee韓國人寫的,最新的版本是0.2.C,這個C++ wrapper For Lua能夠方便和
快捷與C/C++通信,LuaTinker參考了luabind和luaplus的特征寫的,雖然沒有bindlua和luaplus這本強(qiáng)大
和提供很多功能,LuaTinker的實現(xiàn)只有兩個文件,但是LuaTinker提供的基本能夠滿足大部的要求,用戶
還可以對它進(jìn)一步的擴(kuò)充,而且用于游戲上特為方便,以下是LuaTinker使用C++結(jié)構(gòu)和類的例子:
// 一個基類
struct base
{
base() {}
const char* is_base(){ return "this is base"; }
};
// 一個測試類
class test : public base
{
public:
test(int val) : _test(val) {}
~test() {}
const char* is_test(){ return "this is test"; }
void ret_void() {}
int ret_int() { return _test; }
int ret_mul(int m) const { return _test * m; }
A get() { return A(_test); }
void set(A a) { _test = a.value; }
int _test;
};
int main()
{
// 注冊base類型到LUA
lua_tinker::class_<base>("base")
.def("is_base", &base::is_base)
;
// 注冊test類型到LUA,注冊test的成員函數(shù)和成員變量
lua_tinker::class_<test>("test")
.inh<base>() // 注冊繼承類
.def(lua_tinker::constructor<int>()) //注冊構(gòu)造函數(shù)
.def("is_test", &test::is_test) // 注冊成員函數(shù)
.def("ret_void", &test::ret_void)
.def("ret_int", &test::ret_int)
.def("ret_mul", &test::ret_mul)
.def("get", &test::get)
.def("set", &test::set)
.def_readwrite("_test", &test::_test) // 注冊成員變量
;
test g_test(11);
lua_tinker::decl("g_test", &g_test);
}
// Lua腳本
temp = test(4) 創(chuàng)建一個test類 print(temp._test) 打印test的_test成員 print(g_test) print(g_test._test) 打印g_test的成員變量_test print(g_test:is_test()) 輸出信息 print(g_test:ret_int()) 返回g_test的成員變量_test
這么幾句就能夠方便的使用C/C++定義的結(jié)構(gòu)或類
評論
圖片
表情
