(補足:これはゲームプログラミングです)
LuaBindを使用してクラス全体をLuaにバインドするのは簡単です。
class test
{
test()
{
std::cout<<"constructed!"<<std::endl;
}
void print()
{
std::cout<<"works!"<<std::endl;
}
}
//何処か別の場所
module[some_lua_state]
[
class_<test>("test")
.def(constructor<>())
.def("print",&test::print)
];
これで、Luaでクラスのインスタンスを作成し、それを使用できます。
lua_example.lua
foo = test() //will print "constructed!" on the console
foo:print() //will print "works!" on the console
ただし、ここで、特定のテストインスタンスをLuaにバインドしたいと思います。これにより、オブジェクトをLuaに渡すことができます。たとえば、Playerクラスのインスタンスを使用して、次のようなことを行うことができます。
Player:SetPosition(200,300)
苦労して何かをするのとは対照的に
SetPosition("Player",200,300)
ここで、対応するC ++ SetPosition関数は、プレーヤーを見つけるためにstd::mapを検索する必要があります。
これも可能ですか?もしそうなら、LuaBindでどのように行うことができますか?