2

luabind を使用して、C++ からオブジェクトのテーブルを作成します

luabind::object create_table(lua_State *L)
{
  luabind::object result = luabind::newtable(L);
  int index = 1;
  for ( ... ) {
    lua_Object *o = new lua_Object( ... );
    result[ index ++ ] = o;
  }
  return result;
}

関数を次のように登録します

module(L)
[
  def("create_table", &create_table)
]

および lua_Object として

class_<lua_Object> reg("Object");
reg
  .def(constructor<float,float>())
  ;
module(L) [ reg ];

テーブルに格納されているオブジェクト ( new lua_Object( ... ) ) の所有権を取得するように luabind に指示するにはどうすればよいですか? 回避策は何ですか?

ありがとう -

4

1 に答える 1

2

交換

result[ index ++ ] = o

result[ index ++ ] = luabind::object(L, o, luabind::adopt(luabind::result));

余談ですが、ポリシーに登録create_tableする必要はありませんか?raw(_1)

于 2011-02-08T14:22:29.660 に答える