我今天刚下载了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代码正在这样做,没有问题。我在这里做错什么了?
发布于 2012-11-13 05:42:50
https://stackoverflow.com/questions/13355945
复制相似问题