3

私はこのLuaコードを持っています:

function returnPerson()
    local person = Person("Mike", 23)     
    return person
end

Person(LuaBridge を使用して登録された C++ クラス) を表すユーザーデータを返します。そのため、lua_pcall を使用してこの関数を呼び出すと、lua スタックの最後の要素がそのユーザーデータになります。私の質問は、このユーザーデータを -1 で C++ の Person に変換 (キャスト) する方法です。

私はこれを試しましたが、プログラムを終了するだけです:

LuaRef lref_p(l);

lref_p.fromStack(l, -1);

Person pers = lref_p.cast<Person>();

私はそれが理にかなっていることを願っています:)

4

1 に答える 1

2

OK、何時間も微調整して試した後、解決策を見つけました。それは 2 行目lref_p.fromStack(l, -1);でした。それが問題でした。そのはずlref_p = LuaRef::fromStack(l, -1);

また、これを行うためのより簡単でクリーンな方法を見つけました。

Person *pers = luabridge::Userdata::get<Person>(l, 1, false);

于 2015-08-28T12:59:06.853 に答える