LuaBridge and Inheritance



我正试图使用LuaBridge通过基类指针将对象从C++传递到Lua。派生类和基类都已正确地向LuaBridge注册。

在C++方面:

// Assume both Foo and FooBase are registered properly with LuaBridge,
// exposing the a, b, and c properties
struct FooBase
{
    int a;
    // ...
};
struct Foo : public FooBase
{
    int b;
    int c;
    // ...
};
// ... other code ...
void Bar(const FooBase* foo)
{
    // Assume that 'foo' is a pointer to a valid 'Foo' object
    luabridge::LuaRef ref = luabridge::getGlobal(L, "bar");
    ref(foo);
}    

卢阿方面:

function bar(foo)
    foo.a -- This is ok
    foo.b -- This is nil
end

如何在Lua中从FooBase*"向下投射"到Foo*?Lua/LuaBridge支持这一点吗?

可能不会,这样做的必要性可能会显示代码中的设计错误。在C++中预先形成强制转换时,您对类型的了解要比Lua多得多,因此函数Bar要么接受Foo*,要么在调用函数之前进行下转换。

相关内容

  • 没有找到相关文章

最新更新