今日LuaBridgeをダウンロードしたばかり で、これまでのところ非常に満足しています. 私が気づいたことの 1 つは、関数パラメーターとして 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 コードがこれを問題なく実行しているのを見たことがあります。ここで何が間違っていますか?