(nota al margen: Esta es la programación de juegos)LuaBind: ¿Cómo vincular una instancia específica de clase a Lua?
Encuadernación clases enteras de LUA utilizando LuaBind es fácil:
class test
{
test()
{
std::cout<<"constructed!"<<std::endl;
}
void print()
{
std::cout<<"works!"<<std::endl;
}
}
// en otro lugar
module[some_lua_state]
[
class_<test>("test")
.def(constructor<>())
.def("print",&test::print)
];
Ahora puedo crear instancias de la clase en Lua y úsalo:
lua_example.lua
foo = test() //will print "constructed!" on the console
foo:print() //will print "works!" on the console
Sin embargo, ahora me gustaría vincular una instancia específica de prueba a Lua. Esto me permitiría pasar objetos a Lua, p. una instancia de la clase del jugador y hacer algo como:
Player:SetPosition(200,300)
en lugar de ir por el camino difícil y tener algo así como
SetPosition("Player",200,300)
donde la correspondiente función de C SetPosition ++ necesita buscar un std: : mapa para encontrar el jugador.
¿Esto es posible? Si es así, ¿cómo puedo hacerlo en LuaBind?
Han pasado un par de horas desde que lo respondiste, pero gracias de nuevo. luabind :: globals lo hace todo muy, muy fácil. También luabind ha elevado mi respeto por la metaprogramación de plantillas en C++ a un nuevo nivel. – TravisG