从C ++返回对象表,采用策略

时间:2011-02-08 11:26:04

标签: lua luabind

使用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 ];

我怎样才能告诉luabind取得存储在表中的对象的所有权(new lua_Object(...))?什么会解决?

谢谢 -

1 个答案:

答案 0 :(得分:2)

替换

result[ index ++ ] = o

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

在旁注中,您是否必须使用create_table政策注册raw(_1)