我今天刚刚下载了 luabridge ,到目前为止对此感到非常满意。我注意到的一件事是,我能够规避将lua_state作为功能参数的正常要求。
我可以做到这一点:
//C++ files
void love(int i) {std::cout << i;}
luabridge::getGlobalNamespace(lua)
.addFunction("love", love);
-- Lua file
love(8)
它可以正常工作,但是如果我对以下效果做任何事情:
//C++ files
struct Tester {
int number;
void MemFunction (int i) { std::cout << i;}
static void Register(lua_State*);
};
void Tester::Register(lua_State *lua) {
luabridge::getGlobalNamespace(lua)
.beginClass<Tester>("Tester")
.addConstructor <void (*) (void)> ()
.addData("number", &Tester::number)
.addFunction("MemFunction", &Tester::MemFunction)
.endClass();
}
--Lua file
c = Tester() -- works...
c.number = 1 -- works...
c.MemFunction(10) -- nothing!
我在文档中没有阅读的任何内容都表明无法注册具有非lua_state参数的成员函数,而且我已经看到了一些Luabridge代码,毫无问题。我在这里做错了什么?
您必须使用方法调用语法
c:MemFunction(10)
我建议您使用GitHub的较新版本,该版本具有广泛的文档。它还允许有关输入参数和返回值的一些额外的灵活性。