|
|

楼主 |
发表于 2006-9-27 12:39:00
|
显示全部楼层
Re:自制 lua C_API 的 c++封装
我最早也是用LuaWrap,后来希望更加直接,希望用更多功能,在luauser上看过不下十份cpp封装,最后变成现在这样的。我的出发点就是使用方便,比如:
lua:
tmp = the_table.get_name("left","right");或tmp = the_table["get_name"]("left","right")
cpp:
string tmp;
Set(tmp) = d.global["the_table"]["get_name"]("left","right");
//本来是d["the_table"]["get_name"],后来考虑到LUA_REGISTRYINDEX,改了。
两端调用很相似的。
如果用LuaWrap,就得多写不少。
另外类的封装:
我的:
namespace Test{
struct test_t
{
int n;
const test_t* ft(test_t& r){cout<<"f(test_t* r)\n";r.n = 55;return this;}
};
}
BEGIN_CLASS2LUA(::Test::test_t)
LUA_METHOD(ft)//或{"ft",FUN2LUA(&::Test::test_t::method)}
END_CLASS2LUA
这一段宏,不需要与类的文件写在一起,在任意.cpp内完成即可。(不写产生连接错误)
LuaWrap要加在类定义里,这样以后恐怕不方便,而且代码长。 |
|