1

此剪辑适用于基本类型:

int CreateBasicObject(lua_State *L)
{
    int ret0;

    lua_pushinteger(L, ret0);

    return 1;
}

在 lua 中它看起来像这样:

local NewObject=CreateBasicObject()

我将如何返回类而不是 ints

push(L,&MyObject);
return 1;

似乎无法正常工作,lua 部分如下所示:

self.MyObject=Screen.MyObject(); 

错误是:

attempt to index field 'MyObject' (a number value)
4

1 回答 1

2

最新的 LuaBridge版本中,您可以使用RefCountedPtr例如:

一些 C++ 定义

struct A {};

static RefCountedPtr<A> SomeA() {
 return RefCountedPtr<A>(new A);
}

和绑定:

luabridge::getGlobalNamespace(L)
  .beginClass<A>("A")
   .addConstructor< void (*) (), RefCountedPtr<A> >()
  .endClass()

  .addFunction("SomeA",&SomeA);

现在您可以A安全地返回对象并将它们传递给其他 Lua 绑定函数RefCountedPtr<A>

在 lua 中,您可以像这样使用它:

local a=A()
--do something with a...

local b=SomeA()
--do something with b...
于 2013-04-25T08:43:25.543 回答