2011-02-08 19 views
2

採用、C++のオブジェクトのテーブルを返す、私はポリシーluabindを使用

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

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

とlua_Objectとしての機能を登録する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; 
} 

からオブジェクトのテーブルを作成します

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

おかげ -

答えて

2

サイドノートでは

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

result[ index ++ ] = o 

を交換してください、あなたはraw(_1)ポリシーにcreate_tableを登録する必要はありませんか?

+1

ありがとう - 私はちょうどそれを試してみて、それは正常に動作します。生のポリシーはもはや必要ありません:http://www.rasterbar.com/products/luabind/docs.html#raw、lua_State *を最初のパラメータとして置き、luaBindはそれを自動的に検出します。 – user608003

関連する問題