gpt4 book ai didi

c++ - 不允许参数转换 - MQL5 - CArrayObj

转载 作者:行者123 更新时间:2023-11-28 06:19:54 27 4
gpt4 key购买 nike

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

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' - parameter conversion not allowed

如果我在我的 OnTick() 方法中做同样的事情,它就会起作用。

如有任何帮助,我们将不胜感激。

最佳答案

使用 * 与引用。 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 .​​..但在这段代码中这将毫无意义,因为不会使用修改后的指针。

关于c++ - 不允许参数转换 - MQL5 - CArrayObj,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29499472/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com