Возвращая таблицы объектов из C ++, примите политику - PullRequest
2 голосов
/ 08 февраля 2011

Используя 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 as

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

Как я могу сказать luabind стать владельцем объектов, хранящихся в таблице (новый lua_Object (...))? Что бы обойти?

Спасибо -

1 Ответ

2 голосов
/ 08 февраля 2011

Заменить

result[ index ++ ] = o

с

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

На заметку, не нужно ли регистрироваться create_table с raw(_1) полисом?

...