不允许参数转换 - MQL5 - CArrayObj
Parameter conversion not allowed - MQL5 - CArrayObj
我在全局范围内声明了以下对象:
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' - parameter conversion not allowed
如果我在我的 OnTick()
方法中做同样的事情,它就会起作用。
如有任何帮助,我们将不胜感激。
使用 * 与参考。 OnTick()最后一行,改为
CalcUpwardMovement(*UpMovm);
因为该方法使用引用。
编辑 - 4/8
奇怪……你的编译器需要另一个括号吗?我只是猜测。我认为它不应该需要另一个括号。
您的代码,以及我建议的修复(参见 "change here" 评论)
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 ...但是在这段代码中这将毫无意义,因为不会使用修改后的指针。
我解决问题如下:
UpwardMovements.Add(GetPointer(pUpMovm));
您可能想在执行此操作之前检查指针 CheckPointer(GetPointer(pUpMovm));
我在全局范围内声明了以下对象:
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' - parameter conversion not allowed
如果我在我的 OnTick()
方法中做同样的事情,它就会起作用。
如有任何帮助,我们将不胜感激。
使用 * 与参考。 OnTick()最后一行,改为
CalcUpwardMovement(*UpMovm);
因为该方法使用引用。
编辑 - 4/8
奇怪……你的编译器需要另一个括号吗?我只是猜测。我认为它不应该需要另一个括号。
您的代码,以及我建议的修复(参见 "change here" 评论)
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 ...但是在这段代码中这将毫无意义,因为不会使用修改后的指针。
我解决问题如下:
UpwardMovements.Add(GetPointer(pUpMovm));
您可能想在执行此操作之前检查指针 CheckPointer(GetPointer(pUpMovm));