错误、漏洞、问题 - 页 1707

 
Комбинатор:
指针被赋予rvalue,然后用新的A覆盖。

在哪里,就在这里?

this[0] = new A;

这里的运算符[]返回单元格Data[0]中包含的值。不是对该单元格的引用,也不是对该单元格的指针,而只是该单元格中所包含的数值的 拷贝,即rvalue。当然,没有什么可以分配给这个副本。我不明白operator=如何改变这一点。

 
Sergei Vladimirov:
而且我还是不明白最后一个例子。在A类中重载"="运算符,将this[0]从rvalue变成lvalue...我想不出来。这是不是MCL的某种特性,在专业术语中没有这种行为。我的意思是过载=在A。还是通过试验和错误?
在充分理解的情况下,我做到了。否则我肯定不会写这样的东西。

关于交易、自动交易系统和策略测试的论坛

图书馆:TypeToBytes

fxsaber, 2016.09.21 21:25

已出版。现在,对于任何变量(结构或标准类型),不仅可以像数组一样进行读取,还可以进行写入。

_W(AnyVariable)[Pos] = AnyValue; // Записывает по байтовому смещению Pos значение AnyValue в переменную AnyVariable

在实现之前,这并不容易猜到--可能变成了对平均OOP熟练程度的一个很好的测试:我只知道类的经典内容

如果有人知道类似的事情,请分享链接,以便教育。


 
fxsaber:
在充分理解的情况下,我做到了。否则我就不会写这样的东西。

所以你什么都明白,但你不能说出来?))我明白了。
 
Sergei Vladimirov:
所以你什么都明白,但你不能说什么?))我明白了。
是的,嗯,它发生了。我不能制定它。这就是为什么我要求开发商好好做。
 
Sergei Vladimirov:

在哪里,就在这里?

this[0] = new A;

这里的运算符[]返回单元格Data[0]中包含的值。不是对该单元格的引用,也不是对该单元格的指针,而只是该单元格中所包含的数值的 拷贝,即rvalue。当然,没有什么可以分配给这个副本。我不明白A类中的operator=如何改变这一点。

也许这都是关于MCL中引用的那些相同的问题。

A* operator []( const int Pos )
{
    return(this.Data[Pos]);
}

结果可能是,这里返回的不是值,而是对它的引用,即lvalue...但为什么不能马上分配一个新的值,为什么我们在A类中需要operator=?我不明白...

 
Sergei Vladimirov:

可能吧,这都是MKL中相同的参考资料。

好像没有发现这里返回的不是一个值,而是对它的一个引用,即lvalue...但为什么不能马上分配一个新的值,为什么我们在A类中需要operator=?我不明白...

当你给一个rvalue-pointer分配东西时,这个指针就会自动被转换为一个对象引用。 好吧,每个人都是昨天才出生的!

我很久以来一直在向服务台提出这个问题,但他们说这不安全,尽管事实上这并不比通过引用传递参数 更危险。

 
Alexey Navoykov:

当你给一个rvalue-pointer分配东西时,指针会自动转换为对象引用。 这就像昨天一样,不是吗?

我现在明白了,谢谢你。
 
在功能区中突出显示行的能力是缺乏的。我可以看它,但我不能突出它。
 
这到底是什么?
2016.09.26 14:02:11.858 Books   invalid book item[RTS-12.16,buy,98090.00000,-16]
 

类型不匹配

MqlTick time_msc -long.

CopyTicks from -ulong.