此剪辑适用于基本类型:
int CreateBasicObject(lua_State *L)
{
int ret0;
lua_pushinteger(L, ret0);
return 1;
}
在lua看起来像这样:
local NewObject=CreateBasicObject()
我如何进行返回类而不是整理?
push(L,&MyObject);
return 1;
似乎无法正常工作,lua部分看起来像这样:
self.MyObject=Screen.MyObject();
错误是:
attempt to index field 'MyObject' (a number value)
答案 0 :(得分:2)
在newest 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...