(примечание: это программирование игры)
Привязка целых классов к Lua с использованием LuaBind очень проста:
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?