2

Luaで、tolua++からバインドされたC++クラス階層を表すメタテーブル階層をナビゲートする必要があります。

たとえば、tolua++によってバインドされたC++のクラスCFooがあるとします。Luaでは、次のようにこのクラスのインスタンス(userdata型になります)を作成できます。

local s = CFoo.new()

私はメタテーブルを手に入れることができます:

local mt = getmetatable(s)

このクラスのバインドされたメンバーを次のように検査できます。

for i,v in pairs(mt[".get"]) do
    -- Blah...
end

ただし、mt ["。get"]には、このクラスで明示的にバインドされたメンバーのみが含まれ、親クラスでバインドされたメンバーは含まれません。親クラスのメンバーを含む、すべてのバインドされたメンバーをトラバースする必要があります。

tolua ++ソースコードを調べると、tolua++は「tolua_super」グローバルテーブルにスーパークラス情報を保持しているようです。しかし、これをルア側からどのようにナビゲートするかは明確ではありません。

4

0 に答える 0