swigを使用して、非常に多くのラップされたC++クラスを含むluaモジュールを作成しました。ラッパーは問題なく生成およびコンパイルされます(-Wallを使用)。しかし、私が見つけたいくつかの場所で、次の問題が発生しました。メンバーデータの基本的な割り当てが失敗します。
私が実行した場合:
Lua 5.1.4 Copyright (C) 1994-2008 Lua.org, PUC-Rio
> require('myModule')
> a = myModule.ClassA()
次に、「a」にアタッチされたメタテーブルにすべてのメンバーデータが含まれていることを確認できます(この場合、クラスタイプClassBとClassCのフィールド「b」と「c」)。
私はさらに行うことができます:
> a.b = myModule.ClassB()
これにより、bがClassB()の新しいインスタンスに正常に再割り当てされます。しかし、私がやろうとすると:
> a.b.c = myModule.ClassC()
エラーメッセージが表示されます:
Error in ClassB_c_set (arg 2), expected 'ClassC *' got 'ClassB *'
'='の右側の式は、再割り当てされるデータフィールドを含む要素と同じタイプのオブジェクトであるかのように。何か簡単なものが欠けているに違いないと思いますが、壁に頭をぶつけて数時間も無駄になっています。
誰か考えがありますか?ありがとう!