Errori, bug, domande - pagina 1032

 
stringo:
A proposito, cosa intendeva dire cercando di organizzare lo spostamento a sinistra per 35 (che è il numero a cui si converte il '5' letterale)?
Era un esempio semplificato il più possibile. Il punto era di sovraccaricare l'operatore. Questo vi lascia con la trasformazione esplicita
 
A100:
Questo era un esempio semplificato il più possibile. Il punto era proprio quello di sovraccaricare l'operatore. Questo ci lascia con la trasformazione esplicita.
Grazie per aver semplificato l'esempio. Tali semplificazioni sono molto utili per gli errori di parsing
 
Un'altra incongruenza
class A {
public:
        virtual int f() { return ( 1 ); }
};

class B : public A {
public:
        virtual int f() { return ( 2 ); }
};

int g( A& a )
{
        return ( a.f() );
}

void OnStart()
{
        B b;
        Print( g( b ) ); // результат: 1
}
Mentre una costruzione simile in C++ restituisce il risultato: 2, che è logico perché l'oggetto è B e non A
 
A100:
Un'altra incongruenzaMentre una costruzione simile in C++ restituisce il risultato: 2, che è logico, perché l'oggetto è esattamente B, non A
Sì, sembra un errore, grazie per averlo trovato - sicuramente lo controlleremo e lo sistemeremo.
 
Le voci nella votazione non sono tradotte automaticamente.
 
MetaDriver:

Qual è la tua situazione?

Non posso riprodurre la tua situazione per una semplice ragione: non ho un :

Sì, era nel download del file che era l'errore, non nei buffer. Sembra che ora sia andato avanti.
 
Al_key:
Sì, c'era un errore nel download del file, non nei buffer. Ora sembra essere andato avanti.

Un'altra domanda:

Avete un esempio di come eseguire un indicatore personalizzato su piccoli grafici (quelli che hanno oggetti e possono essere lanciati sopra il grafico principale)? Io uso in MT4 gli indici di valuta e sarebbe molto bello vederli in una piccola finestra mobile di MT5, invece di sprecare metà dello schermo.

 
Il segnale copia l'affare, ma il volume è sempre 0,01 e quello del venditore è diverso. Voglio che il volume sia uguale a quello del venditore.
 
A100:
Questo viene dal Riferimento MQL5:

Qualsiasi carattere singolo racchiuso tra virgolette singole o codice esadecimale ASCII come 'x10' è una costante di carattere ed è di tipo ushort.

Sorge quindi la domanda: perché il compilatore non può distinguere ushort da int - senza specificarlo esplicitamente?
Trovato il motivo, risulta che il compilatore considera un singolo carattere tra virgolette, ad esempio '5' non ushort, ma short, come conferma l'esempio:
class A {
public:
        int operator<<( ushort ch ) { return ( 1 ); }
        int operator<<( short  ch ) { return ( 2 ); }
        int operator<<( int   ch ) { return ( 3 ); }

        int f( ushort ch ) { return ( 4 ); }
        int f( short  ch ) { return ( 5 ); }
        int f( int   ch ) { return ( 6 ); }
};

int h( ushort ch ) { return ( 7 ); }
int h( short  ch ) { return ( 8 ); }
int h( int   ch ) { return ( 9 ); }

void OnStart()
{
        A a;
        Print( a << '5' );  // результат: 2
        Print( a.f( '5' )); // результат: 5
        Print( h( '5' ));   // результат: 8
}

Tutto si compila, funziona e non richiede di specificare conversioni esplicite.

Di conseguenza, o la descrizione non corrisponde al compilatore, o il compilatore non funziona secondo la descrizione. Vorrei un riscontro.

 

cosa può essere:

errore runtime critico 1079902208 nella funzione OnTick (errore sconosciuto)

test di 2 ore

Vale la pena controllare gli strumenti disponibili.