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