1

この抜粋は基本的なタイプで機能します:

int CreateBasicObject(lua_State *L)
{
    int ret0;

    lua_pushinteger(L, ret0);

    return 1;
}

ルアでは次のようになります。

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 に答える