使用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(...))?什么会解决?
谢谢 -
答案 0 :(得分:2)
替换
result[ index ++ ] = o
与
result[ index ++ ] = luabind::object(L, o, luabind::adopt(luabind::result));
在旁注中,您是否必须使用create_table
政策注册raw(_1)
?