これは、C++でLua C APIを使ってやりたいことです。他のメタデータから継承するメタデータを設定すると同時に、ユーザーデータを別のタイプに変更する方法を教えてください。
私はuserdataを基本のuserdataオブジェクトから派生させる良い方法を見つけようとしています。 、これらの例では、私を
local item = me:GetCurrentItem()
print(item:GetBaseObject():GetPos())
:
local item = me:GetCurrentItem()
print(item:GetPos())
の代わり:
が、私はこれを行うことができるようにしたいGetCurrentItem()は、一部の機能でユーザデータを返しますが、それがベースに欠けますitem:GetBaseObject()が返す関数。
私は学習目的でCrysis Wars SDKのLuaをバインドしています。 SDKは構造体である基本エンティティへのインタフェースを提供します。 IItem構造体(me:GetCurrentItem())は同じです。 これらは構造体なので、それらを基本構造体にキャストしたり、基本関数を呼び出すことはできません。 IEntity * GetEntity()関数を使用する必要があります。
私は__indexで自己ポインタを変えようとしましたが、局所変数 "item"が "entity"になってしまいましたが、GetPos関数を呼び出した後に元に戻す必要があります。 。
誰にもこの問題の良い解決策がありますか?
いい方法がないとすれば、これを行うと思っていました。ベースエンティティには、私が使用しようとしている多くの機能があるので、すべてのクラスで同じ機能を再度追加することは、非常に繰り返しが必要です。 – CapsAdmin
多分私はこれを実現する必要があります。 – CapsAdmin
@CapsAdmin繰り返しコードは決して良いことではありません。私はあなたがよりきれいな方法であなたが望むことができるようにするべきであるいくつかのコードを追加しました。あなたはそれに問題がある場合は教えてください。 – kikito