C++クラスのコレクション用にLuaバインディングセットを構築しようとしていますが、Pythonを使ってより良い結果が得られるかどうかを確認しています。いずれの言語でもバインディングは機能しているようですが、他のクラスのメンバーを含むクラスのインスタンスを初期化すると、そのデータメンバーは初期化されているようには見えません。Python/lua用のSwigバインディングでメンバーデータが正しく初期化されない
例えば、クラスを取る:私はこのようなクラスのバインディングを生成する場合
class MyClass : public ParentClass // (Obviously) not a real class
{
public:
SomeClass sc;
OtherClass oc;
};//Note that none of my classes have a constructor or destructor; this is by design.
を、私のような文を実行することができる午前:
var = module_name.MyClass()
print(var.sc.x, var.sc.y)
を私は期待ジャンク値を取得画面に印刷されます。しかし、OtherClassのインスタンスについて何かを印刷しようとすると、 "stubbed"ということが明らかになります.Luaにはmetatableが全くなく、dir(var.oc)を実行するPythonではデフォルトの関数しかありません。しかし、私はそれから行う場合:
var.oc = module_name.OtherClass()
OCのメタテーブル/ DIR(OC)の呼び出しは、私が望んでいるだろうと予想されるとして、それを扱うことができるものです。
会員データの-some-のみが初期化されている理由については、誰でも知ることができますか?
ありがとうございます!