0

C++の呼び出しをカプセル化するクラスを実際に作成しようとしていますがLua、実際には関数をカプセル化してコンストラクターにスクリプトをロードしようとしていますLuaが、主な問題は、見つけられない Lua スクリプトの関数呼び出しを作成しようとしたときです。複数の戻り値を格納する方法と、すべての引数を正しくプッシュする方法。

私は、任意の数の任意のタイプのパラメーターでlua関数を呼び出す関数の実装のアイデアを見つけようとしています(関数は引数をプッシュして関数を呼び出しますが、たとえば動的キャストでたとえば、「lua_pushnumber」またはプッシュ文字列が必要です。

4

1 に答える 1

0

コンストラクターで何らかのタイプのバリアント クラスの配列を受け入れ、それらのタイプを使用してそれらを Lua に送り込む方法を決定することができます。一方、C/C++ と Lua の間で交換可能な型は、string と number/double の 2 つだけです。考えられる解決策は、文字列の配列 (または必要に応じて char** と int) を渡し、double も文字列として渡すことです。

次に、文字列「return」の後に文字列または double の文字列表現を追加して、loadstring() 呼び出しを実行できます。loadstring() によってスタックにプッシュされた関数を実行すると、lua エンジンは変数 (文字列または適切な型の double) を lua スタックにプッシュします。double を文字列解析するオーバーヘッドが発生しますが、速度がどうしても必要な場合は、とにかく純粋に C++ でコーディングすることになるでしょう :) この方法の利点は、実際にこの方法でも関数を渡すことができることです: (つまり、"return function() print("hello"); end")

于 2012-05-03T00:43:43.550 に答える