1

グローバル スコープで次のオブジェクトを宣言しています。

CArrayObj *UpwardMovements = new CArrayObj;

CUpwardsにオブジェクトを追加したいと思いますUpwardMovementsCUpwardsから継承しCObjectているため、配列に追加することができます。ただし、メソッドの配列に追加することはできません。

例えば:

void OnTick()
{
   CUpwards *UpMovm = new CUpwards(ColorForUpwards);
   UpwardMovements.Clear();
   CalcUpwardMovement(UpMovm);
}



void CalcUpwardMovement(CUpwards &pUpMovm)
{
  UpwardMovements.Add(pUpMovm);
}

私は得る:

'pUpMovm' - パラメータの変換は許可されていません

私のOnTick()方法で同じことをすると、うまくいきます。

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

4

2 に答える 2

2

* と参照の使用。OnTick() の最後の行を次のように変更します。

CalcUpwardMovement(*UpMovm);

その方法は参照を使用するためです。


編集 - 4/8

奇妙な...あなたのコンパイラは別の括弧を必要としていますか? 私はちょうど推測しています。別の括弧は必要ないと思います。

私が提案した修正を含むあなたのコード(「ここで変更」コメントを参照)

void OnTick()
{
   CUpwards *UpMovm = new CUpwards(ColorForUpwards);
   UpwardMovements.Clear();
   CalcUpwardMovement( (*UpMovm) );    // change here <<<<<<<<<<<<
}

void CalcUpwardMovement(CUpwards& pUpMovm)
{
  UpwardMovements.Add(pUpMovm);
}

参照を使用するつもりはなかったのかもしれません (正式なパラメーターに 'pUpMovm' という名前を付けたようですが、参照はポインターではありません。ある場所で気が変わって、他の場所では気が変わったのですか?

おそらく、UpwardMovements.Add(pUpMovm) が OnTick() でローカル変数ポインタ UpMovm を変更できるようにしたいでしょう...しかし、このコードでは、変更されたポインタが使用されないため無意味です。

于 2015-04-07T20:07:15.283 に答える