Re: Deriving inherited classes with Luabind

Michael Gulak <[email protected]>
Newsgroups gmane.comp.lang.lua.bind.user
Message-ID <[email protected]>
Seems I misworded my question.  The issue isn't doing the derivation - at
least, it may not be.  Turns out I'm not even far enough to know, because I
can't call the function I overrode in Lua from C++.  I followed the example
from the documentation, and my Lua looks like:

globalone = base()

function globalone:f()
  print("here!")
end

set(newone)

set() just takes a pointer to a base, and sets a global variable in c++ to
it.  I then call this in c++:

globalBase->f();

but I get the output from the C++ version of the function.  My bindings are:

    luabind::module(myLuaState)
    [
        luabind::class_<base, base_wrapper>("base")
            .def(luabind::constructor<>())
            .def("f", &base::f, &base_wrapper::default_f),
        luabind::def("set", &set)
    ];

And the class declarations are:

class base
{
public:
    base() { std::cout << "Making a base in C++" << std::endl; }
    virtual void f() { std::cout << "C++ Version" << std::endl; }
};

base* globalBase;

struct base_wrapper : base, luabind::wrap_base
{
    base_wrapper() : base() { std::cout << "Making a base_wrapper in C++" <<
std::endl; }

    virtual void f() { call<void>("f"); }

    static void default_f(base* ptr) { return ptr->base::f(); }
};

void set(base* ptr)
{
    std::cout << "setting" << std::endl;
    globalBase = ptr;
}

On Sun, Aug 16, 2009 at 10:08 PM, Michael Gulak <[email protected]>wrote:

> So if I have a class structure in C++ as follows
>
> class A
> {
>    virtual void f();
> };
>
> class B : public A
> {
>
> };
>
> class C : public B
> {
>
> };
>
> And I want to set up a wrapper so I can derive classes from A and B in Lua,
> how exactly should I go about that?  I can get it to work properly with just
> the wrapper for A, but I don't know how to do it for the child classes.  If,
> in the luabind defs, I use luabind::bases<A, WrapperA>, it crashes.  Thanks.
>
>

------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with 
Crystal Reports now.  http://p.sf.net/sfu/bobj-july

_______________________________________________
luabind-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/luabind-user
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.