Search code examples
c++lualuabind

when do luabind free created objects?


I'm having problems with luabind. I define a std::map to allocate objects created in lua. I publish this map as a global object in lua in this way:

luabind::globals(L)["g_SceneManager2D"] = this;

After that, this object is used into a function into lua, where many objects are created and inserted into this map. The problem comes when lua function ends and luabind returns the control to C++ side program, because automatically all contents of the map are lost.

I was looking for the error. I keep the lua context alive, so this object must exists.

Could you helpme??

Many thanks :)


Solution

  • I suggest use a shared_ptr<>(this) rather than raw this. boost::shared_from_this might help. Make sure your class is registered using Luabind too, and that the class_ is specified as held by a shared_ptr.

    Another fun idea might be to make your Lua function just generate the "map" as a Lua table, return it, and you can iterate over it in C++ to build your std::map.