Errores, fallos, preguntas - página 1707

 
Комбинатор:
Al puntero se le asigna rvalue, que luego se sobrescribe con el nuevo A.

¿Dónde? ¿Aquí mismo?

this[0] = new A;

Aquí el operador[] devuelve el valor contenido en la celda Datos[0]. No es una referencia a esta celda ni un puntero a la misma, sino simplemente una copia del valor contenido en esta celda, es decir, rvalue. No se puede asignar nada a esta copia, por supuesto. No entiendo cómo el operador= cambia esto.

 
Sergei Vladimirov:
Y sigo sin entender el último ejemplo. La sobrecarga del operador "=" en la clase A convierte este[0] de rvalue a lvalue... No sé cómo. ¿Es algún tipo de característica de la ACM, no hay tal comportamiento en los profesionales.fxsaber, ¿cómo has llegado a esta construcción? Me refiero a la sobrecarga = en A. ¿O por ensayo y error?
Con plena comprensión lo hice. De lo contrario, definitivamente no habría escrito algo así.

Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias

Bibliotecas: TypeToBytes

fxsaber, 2016.09.21 21:25

Publicado. Ahora para cualquier variable (estructura o tipo estándar) no sólo funciona la lectura como con el array, sino también la escritura:

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

No era fácil de adivinar antes de la implementación - probablemente resultó ser una buena prueba de la competencia media en POO: sólo conozco los clásicos para las clases.

Si alguien conoce algo similar, por favor, comparta el enlace para la educación.


 
fxsaber:
Con plena comprensión lo hice. De lo contrario, no habría escrito tal cosa.

¿Así que lo entiendes todo, pero no puedes decirlo? )) Ya veo.
 
Sergei Vladimirov:
¿Así que lo entiendes todo, pero no puedes decirlo? )) Ya veo.
Sí, bueno, eso pasa. No puedo formularlo. Por eso pido a los desarrolladores que lo hagan bien.
 
Sergei Vladimirov:

¿Dónde? ¿Aquí mismo?

this[0] = new A;

Aquí el operador[] devuelve el valor contenido en la celda Datos[0]. No es una referencia a esta celda ni un puntero a la misma, sino simplemente una copia del valor contenido en esta celda, es decir, rvalue. No se puede asignar nada a esta copia, por supuesto. No entiendo cómo cambia esto el operador= en la clase A.

Tal vez se trate de esos mismos problemas con las referencias en ACM.

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

Podría resultar que no es el valor devuelto aquí, sino una referencia a él, es decir, lvalue... Pero, ¿por qué no se le puede asignar un nuevo valor de inmediato, por qué necesitamos operator= en la clase A? No entiendo...

 
Sergei Vladimirov:

Probablemente, se trata de las mismas cosas de referencia en MKL.

Como si no resultara que aquí no se devuelve un valor, sino una referencia a él, es decir, lvalue... Pero, ¿por qué no se le puede asignar un nuevo valor de inmediato, por qué necesitamos operator= en la clase A? No entiendo...

Cuando se asigna algo a un puntero rvalue, el puntero se convierte automáticamente en una referencia a un objeto. Bueno, ¡todo el mundo nació ayer!

Llevo mucho tiempo pidiéndolo al Escritorio, pero dicen que no es seguro, aunque de hecho no es más peligroso que pasar argumentos por referencia.

 
Alexey Navoykov:

Cuando asignas algo a un puntero rvalue, el puntero se convierte automáticamente en una referencia a un objeto. Es como ayer, ¿no?

Ahora lo entiendo, gracias.
 
Falta la posibilidad de resaltar fila(s) en la cinta. Puedo mirarlo, pero no puedo resaltarlo.
 
¿Qué demonios es esto?
2016.09.26 14:02:11.858 Books   invalid book item[RTS-12.16,buy,98090.00000,-16]
 

Desajuste de tipo

MqlTick time_msc - long.

CopiarTicks de - ulong.