Errores, fallos, preguntas - página 3106

 

Contradicción:

struct X {
    X() : i( 1 ) {}
    const int i;
};
void OnStart()
{
    X x1[1] = {};    //(1) нормально ???
    X x2[1];
    ZeroMemory( x2 );//(2) Error: 'x2' - not allowed for objects with protected members or inheritance
}

¿Cuál es la diferencia fundamental entre (1) y (2)?

 
A100 #:

Contradicción:

¿Cuál es la diferencia fundamental entre (1) y (2)?

1 es la inicialización en la declaración, 2 es (en general) el cambio.

 
JRandomTrader #:

1 es la inicialización en la declaración, 2 es (en el caso general) la modificación.

Si x1[0].i puede ser cero, ¿por qué no puede serlo x2[0].i? ¿Cómo es peor?

He aquí un ejemplo simplificado de contradicción:

void OnStart()
{
    X x1[1] = {};    //(1) нормально ???
    X x3 = { 0 };    //(3) Error: 'x3' - cannot be initialized with initializer list
}
 
A100 #:

He aquí un ejemplo simplificado de una contradicción:

Y aquí hay otra:

void OnStart()
{
    X x1[1] = {};    //(1) нормально ???
    X x2[1];
    Print( x1[0].i == x2[0].i );
}

Resultado: falso

Considerando que:

 
Error: el software calculó incomprensiblemente una transacción realizada en rublos 365₽->338₽ (40 acciones) y en lugar de -1020₽ mostró una pérdida de 148 dólares.
Si alguien lo sabe, por favor, avise de lo que se puede hacer.
Archivos adjuntos:
 

Ayuda de los expertos :

struct Y
  {
   int               i;
                     Y(const Y & p): i(p.i) {}
  };

void OnStart()
{
  Y y(y);               // UB?
}

¿Es la UB o qué?

 
Error interno del compilador
union X {
    struct XX {char i;} s;
    int i;
} x[1] = {};
void OnStart() {}
5º con {}
 
mktr8591 #:

¿Es la UB o qué?

Esto es un defecto del compilador - en teoría debería haber un error en tiempo de compilación, porque en MQL

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

Bichos, errores, preguntas

A100, 2020.09.30 16:54

Eso contradice su propio concepto de que una variable se considera declarada cuando se finaliza la declaración. ¿Por qué lo inventó en primer lugar? Si es así en un caso y diferente en otro

Si reescribes OnStart así:

void OnStart()
{
  Y y = y; //Error: 'y' - undeclared identifier
}
entonces el compilador reacciona según la teoría de
 
A100 #:

Se trata de un fallo del compilador - en teoría debería haber un error en la fase de compilación, porque en MQL

si reescribes OnStart así:

entonces el compilador reacciona según la teoría

Exactamente.

Gracias.

 

¿Alguien ha averiguado cómo utilizar la biblioteca estándar para aumentar la prioridad del panel?

Tomé el código del ejemplo de aquí.

En la animación puedes ver que si creas un panel y luego una línea de tendencia y la pones debajo del botón, los clics en el botón captan los eventos de clic para la línea. El botón se ignora.

He intentado establecer la prioridad del botón de esta manera: m_button3.ZOrder(100) - pero no ayuda.

También hay un método CWnd::BringToTop(), que he establecido para todo el panel y por separado para el botón. Pero no está muy claro cómo debería funcionar, cómo llamarlo correctamente y establecer esta prioridad. Al llamar a este método, m_id siempre es igual a -1, aunque es el ID del objeto, a juzgar por el comentario, pero m_name parece mostrar que el objeto está involucrado.


Si alguien tiene una solución, por favor, aconseje dónde escarbar.