3

ポインターに関して別の問題があります。

次のヘッダーを持つ関数があります。

 addActor (NxuPhysicsCollection &c, NxActor &a, const char *userProperties=0, const char *actorId=0)

そして、私はそれを次のように使用しようとしています:

 NXU::NxuPhysicsCollection* collection = new NXU::NxuPhysicsCollection();
 NxActor* actor = *actors++;
 NXU::addActor(collection, actor, NULL, NULL);

しかし、次のエラーが表示されます。

タイプ "NXU::NxuPhysicsCollection&" (const 修飾されていない) の参照は、タイプ "NXU::NxuPhysicsCollection*" の値で初期化できません (これはコレクション パラメーター用であり、同じエラーがアクターにも表示されます)

コレクションとアクターのパラメーターを関数に渡して正しく動作させるにはどうすればよいですか?

私はこれを試しました:

 NXU::addActor(&collection, &actor, NULL, NULL);

しかし、それも機能しません。エラーが発生します。

 "Initial value of reference to non-const must be a lvalue."

どんな助けでも大歓迎です。

編集:次のように使用する場合:

NXU::addActor((NXU::NxuPhysicsCollection&)collection, (NxActor&)actor, NULL, NULL);

もうエラーは発生しません。これは正しいです?

NXU と NX 名前空間はクローズド ソースであり、それらの実装方法を変更することはできません。

4

3 に答える 3

3

cとのメンバー関数の仮引数a参照であり、一方 collectionactorポインターであるため、参照と互換性を持たせるためにポインターを逆参照する必要があります。

// No need to pass NULLs for the defaulted parameters, so
// the trailing NULL, NULL are removed.
NXU::addActor(*collection, *actor);

または、参照の代わりにポインターを受け入れるようにコンストラクターのシグネチャを変更できます。

addActor (NxuPhysicsCollection *c, NxActor *a, const char *userProperties=0, const char *actorId=0)
//                             ^           ^
//                             |           |
//                             Here and Here
于 2013-05-21T16:03:04.720 に答える