0

これを機能させるために数え切れないほどの試みをしましたが、実行時にエラーが発生します。ゲーム エンジンのコンテンツを管理するアセット マネージャーを作成しようとしており、スクリプトには lua と luabind を使用しています。すべてをコンパイルし、クラスと変数をバインドし、lua から基本的な変数を取得することは、これまでのところ問題ありませんでした。

私の問題は、資産クラスのインスタンスを格納するために std::vector を使用していて、ベクトルが luabind とうまくいかないように見えることです。私の C++ プログラムはレンダリングなどに使用するため、このベクターが必要になることはわかっています。

マネージャー クラスと変数 (資産クラスを含むベクターを含む) をバインドすると、すべてが正常にコンパイルおよび実行されます。私の lua スクリプトでは、新しいオブジェクトを正常に作成できますが、それらにアクセスしようとすると実行時エラーが発生します。

すべてを要約するには:

ゲーム オブジェクトの情報またはその他のデータに関する情報を保持するクラスがあります。

アセット クラスのベクトルを含む別のクラスがあります。

通常の lua テーブルと同じようにこのベクトルにアクセスしようとすると、実行時エラーが発生します。

では、アセット マネージャー クラスのクラスを変更できるようにするには、C++ と luabind で何をすればよいでしょうか?

4

1 に答える 1

2

ベクトル型自体をいくつかの関連するメソッドにバインドするか、return_stl_iteratorSTL互換のコンテナーでの反復(ただし索引付けではない)を提供するLuabindを試す必要がある場合があります。

さらにヘルプが必要な場合は、バインディングとそのタイプのコードが役立ちます。

于 2010-03-09T03:35:20.233 に答える