我在全局范围内声明了以下对象:
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()
方法中执行相同操作,则可以正常工作。
非常感谢任何帮助。
答案 0 :(得分:1)
使用* vs参考。 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 ...但是在这段代码中,由于不会使用修改后的指针,这将是毫无意义的。
答案 1 :(得分:0)
我解决了以下问题:
UpwardMovements.Add(GetPointer(pUpMovm));
您可能希望使用CheckPointer(GetPointer(pUpMovm));