1

我在全局范围内声明了以下对象:

CArrayObj *UpwardMovements = new CArrayObj;

我想将CUpwards对象添加到UpwardMovements. CUpwards继承自,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 回答
1

我解决了如下问题:

UpwardMovements.Add(GetPointer(pUpMovm));

您可能需要在此操作之前检查指针CheckPointer(GetPointer(pUpMovm));

于 2015-04-19T15:28:24.340 回答