問題タブ [tolua++]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - C++ ユーザータイプが tolua に登録されているかどうかを確認する方法
tolua++ を使用して、C++ クラスの Lua バインディングを生成します。
C++ クラスがあるとします。
および次の内容の tolua .pkg ファイル
次の関数を検討してください。
さて、実際の質問:
tolua_pushusertype は、3 番目のパラメーターが tolua_cclass の呼び出しで登録された C++ クラスの有効な完全修飾文字列に対応しない場合、Lua で segfault を引き起こします。したがって、パラメータ 3 が「Bar」の場合、segfault が発生します。
私がやりたいことは次のとおりです。
toluaを使ってこれを行う方法はありますか?
c++ - tolua ++は代入と不等式演算子を無視しますか?
Lua を C++ クラスに埋め込んでいます。
tolua++ は、クラスのオーバーロードされた演算子を無視しているようです。
tolua++ は次の警告を発行します。
- **tolua++ 警告: operator= はサポートされていません。無視します
- **tolua++ 警告: 演算子!= はサポートされていません。無視します
これを回避する方法はありますか?
c++ - tolua ++:LuaにエクスポートされたC++クラスにlua関数を追加します
私はtolua++を使用していくつかのC++クラスをLuaにエクスポートしています。
各クラスがluaテーブルとしてlua側に「実装」されているという私の理解。したがって、C ++クラスに新しいメソッドを追加する効果を実現できるように、C ++オブジェクトテーブルに新しい(Lua)メソッドを追加することは可能かどうか疑問に思っています。
クラスFoobarをエクスポートしていると仮定します。
LuaではFoobarのメソッドに次のようにアクセスできます。
等
Foobarテーブルの「オブジェクト」に新しいメソッド(newmethod1、newmethod2)を追加できるようにしたいと思います
次の質問があります。
- 上記の方法で、エクスポートされたC ++オブジェクトの機能を「拡張」することは可能ですか?
- Foobarテーブルに新しい関数を追加するにはどうすればよいですか?(私はLuaに比較的慣れていません)
c - 構造体とctor/dtorをtolua++でバインドする
次のようなコードをLuaにバインドするとします。
これらのオブジェクトをLuaスクリプトから作成し、それらの存続期間を明示的に管理したくない。できれば、スクリプトで記述してください
問題:それが期待どおりに機能するためには、bar_createとbar_freeがbarのコンストラクタ/デストラクタであることをtolua++に伝える必要があります。それ、どうやったら出来るの?クラスの場合、tolua++は自動的にctor/ dtorを使用すると主張しますが、構造体の場合はどうでしょうか。
私が思いつくことができる最も良いことは、foo.pkgのこの定義です:
つまり、create()とfree()を明示的に呼び出す必要があります。
tolua++ - Tolua++ と __tostring
ここで tolua++ と __tostring の使用を手伝ってくれる人はいますか?
C++ オブジェクトからバインドされた Lua オブジェクトのメタテーブルに __tostring プロパティを設定しようとすると、クラッシュします。
例えば
...クラッシュを引き起こします。
__eq など、既に存在するメタテーブル関数を設定しても問題ないようですが、__tostring や 'foobar' など、まだ存在しない関数を設定すると、クラッシュが発生します。
parameters - tolua++ を使用してテーブルを C++ に戻す
文字列のテーブルをパラメーターとして lua から C++ メソッドに戻す必要があります。tolua++ を使用してテーブルを受け入れるメソッドをマークする方法はありますか?
lua - tolua++でLuaクラス階層をナビゲートする
Luaで、tolua++からバインドされたC++クラス階層を表すメタテーブル階層をナビゲートする必要があります。
たとえば、tolua++によってバインドされたC++のクラスCFooがあるとします。Luaでは、次のようにこのクラスのインスタンス(userdata型になります)を作成できます。
私はメタテーブルを手に入れることができます:
このクラスのバインドされたメンバーを次のように検査できます。
ただし、mt ["。get"]には、このクラスで明示的にバインドされたメンバーのみが含まれ、親クラスでバインドされたメンバーは含まれません。親クラスのメンバーを含む、すべてのバインドされたメンバーをトラバースする必要があります。
tolua ++ソースコードを調べると、tolua++は「tolua_super」グローバルテーブルにスーパークラス情報を保持しているようです。しかし、これをルア側からどのようにナビゲートするかは明確ではありません。