Re: Member pointers in 0.8.1
Tony Kostanjsek <[email protected]>
| Newsgroups | gmane.comp.lang.lua.bind.user |
|---|---|
| Message-ID | <[email protected]> |
I'd be interested in a solution for this as well. What we did as a workaorund was to add cast functions to the lua bindings for the derived classes, so you have to know that (in Lua) you receive a Object* and then convert like this: local actor = Actor.cast(myobject). It does feel wrong to introduce casts like this to a dynamic language, but at least it works. Ultimately, we rewrote part of our project specifically because of these problems and reimplemented some of the classes in pure lua. I really wish luabind was more intelligent and forgiving when it comes to (smart)pointer casts and general usage. Best, Tony ----- Ursprüngliche Mail ---- Von: hymedia <[email protected]> An: [email protected] Gesendet: Freitag, den 24. April 2009, 19:04:53 Uhr Betreff: Re: [luabind] Member pointers in 0.8.1 Greetings, This might be a no can do but you wizards out there might have an hocus pocus workarounds... Let say the basic function is define like this: .def("GetObject", (Object*(Manager::*)(Name &)) &Manager::GetObjectByName) All good, the Manger return an Object, but many classes derived from Object in my C++ and my Luabind Modules follow the same structure. In c++ you can statically cast to the desired type... Is there a way to static cast a Luabind return value within a Lua script? Something like: local l_camera = (Camera*) Manager:GetObject(Name("Camera")); This would work But it is not really sexy... .def("GetActor", (Actor*(Manager::*)(Name &)) &Manager::GetObjectByName) .def("GetCamera", (Camera*(Manager::*)(Name &)) &Manager::GetObjectByName) thx -----Original Message----- From: Ilia Trendafilov [mailto:[email protected]] Sent: Tuesday, April 14, 2009 3:07 PM To: [email protected] Subject: Re: [luabind] Member pointers in 0.8.1 Problem solved! Thanks! On Mon, Apr 13, 2009 at 10:16 PM, Daniel Wallin <[email protected]> wrote: > Ilia Trendafilov wrote: >> James Porter wrote: >>> Your code works for me in Luabind 0.8.1 / Lua 5.1.4 / MSVC8 SP1 with no >>> problems whatsoever. Is your version of Lua up to date, and did you >>> compile Luabind via bjam? > > Really? That's weird. It fails for me on GCC 4.3.2 as well. > >> Since you can run the code, it seems that I'm doing something wrong, >> but I don't have a clue what it might be. Not sure if that's relevant, >> boost version is 1.37 on Windows and 1.38 on Linux, built by bjam on >> both OSes. > > Can you try this patch, it should solve the problem: > ... > Daniel Wallin > BoostPro Computing > http://www.boostpro.com ---------------------------------------------------------------------------- -- This SF.net email is sponsored by: High Quality Requirements in a Collaborative Environment. Download a free trial of Rational Requirements Composer Now! http://p.sf.net/sfu/www-ibm-com _______________________________________________ luabind-user mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/luabind-user ------------------------------------------------------------------------------ Crystal Reports - New Free Runtime and 30 Day Trial Check out the new simplified licensign option that enables unlimited royalty-free distribution of the report engine for externally facing server and web deployment. http://p.sf.net/sfu/businessobjects _______________________________________________ luabind-user mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/luabind-user ------------------------------------------------------------------------------ Crystal Reports - New Free Runtime and 30 Day Trial Check out the new simplified licensign option that enables unlimited royalty-free distribution of the report engine for externally facing server and web deployment. http://p.sf.net/sfu/businessobjects