LuaBridge和继承

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

在C++方面:

假设Foo和FooBase已经与LuaBridge注册,暴露出a,b和c属性

struct FooBase
{
    int a;
    // ...
};

struct Foo : public FooBase
{
    int b;
    int c;
    // ...
};

// ...其它代码...

void Bar(const FooBase* foo)
{
    // 假设“foo”是指向有效“Foo”对象的指针
    luabridge :: LuaRef ref = luabridge :: getGlobal(L,“bar”);
    ref(foo);
}

在Lua方面:

function bar(foo)
    foo.a--这是ok的
    foo.b--这是空的
end

如何在Lua中从FooBase *向下转换为Foo *?Lua/LuaBridge是否支持这种转换?

点赞
用户3038476
用户3038476

很可能不需要这样做,如果需要的话可能会显示你代码中的设计错误。 在 C++ 中执行强制类型转换,你对于类型的了解比 Lua 更多,这样函数 Bar 要么接受 Foo* 要么在调用函数之前执行 downcast。

2013-11-26 22:22:45