Errori, bug, domande - pagina 3106

 

Contraddizione:

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
}

Qual è la differenza fondamentale tra (1) e (2)?

 
A100 #:

Contraddizione:

Qual è la differenza fondamentale tra (1) e (2)?

1 è l'inizializzazione alla dichiarazione, 2 è (in generale) il cambiamento.

 
JRandomTrader #:

1 è l'inizializzazione alla dichiarazione, 2 è (in generale) la modifica.

Se x1[0].i può essere zero, perché x2[0].i no? Come può essere peggio?

Ecco un esempio semplificato di contraddizione:

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

Ecco un esempio semplificato di contraddizione:

Ed eccone un altro:

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

Risultato: falso

Considerando che:

 
Errore: il software ha incomprensibilmente calcolato una transazione fatta in Roubles 365₽->338₽ (40 azioni) e invece di -1020₽ ha mostrato una perdita di $148.
Se qualcuno lo sa, per favore consigli cosa si può fare.
File:
 

L'aiuto degli esperti:

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

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

È UB o cosa?

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

È UB o cosa?

Questo è un difetto del compilatore - in teoria ci dovrebbe essere un errore in fase di compilazione, perché in MQL

Forum sul trading, sistemi di trading automatico e test di strategia

Bug, bug, domande

A100, 2020.09.30 16:54

Questo contraddice il tuo stesso concetto che una variabile è considerata dichiarata quando la dichiarazione è finalizzata. Perché l'hai inventato? Se è così in un caso e diverso in un altro

Se riscrivi OnStart in questo modo:

void OnStart()
{
  Y y = y; //Error: 'y' - undeclared identifier
}
allora il compilatore reagisce secondo la teoria di
 
A100 #:

Questo è un difetto del compilatore - in teoria ci dovrebbe essere un errore in fase di compilazione, perché in MQL

se si riscrive OnStart in questo modo:

allora il compilatore reagisce secondo la teoria

Esattamente.

Grazie!

 

Qualcuno ha capito come usare la libreria standard per aumentare la priorità del pannello?

Ho preso il codice dell'esempio da qui.

Nell'animazione potete vedere che se create un pannello e poi una linea di tendenza e la mettete sotto il pulsante, i clic sul pulsante catturano gli eventi di clic per la linea. Il pulsante viene ignorato.

Ho provato a impostare la priorità del pulsante in questo modo: m_button3.ZOrder(100) - ma non aiuta.

C'è anche un metodo CWnd::BringToTop(), che ho impostato per l'intero pannello e separatamente per il pulsante. Ma non è del tutto chiaro come dovrebbe funzionare, come chiamarlo correttamente e impostare questa priorità. Lo spacchettamento quando si chiama questo metodo mostra che m_id è sempre uguale a -1, anche se è l'ID dell'oggetto, a giudicare dal commento, ma m_name sembra mostrare che l'oggetto è coinvolto.


Se qualcuno ha una soluzione, si prega di consigliare dove scavare.