Errori, bug, domande - pagina 881

 
sergeev:
Quanti ne conosci?
Sono riuscito ad aggiungere qualche altra classe - ma poi tutto si è ripetuto - cercando di localizzare il problema - ereditarietà e sovraccarico piuttosto complessi - riferirò
 
A100:
Sono riuscito ad aggiungere qualche altra classe - ma poi tutto si è ripetuto - cercando di localizzare il problema - ereditarietà e sovraccarico piuttosto complessi - riferirò
Nessun nome identico con le funzioni #define?
 
sergeev:
c #define nessun nome identico con le funzioni?
I sintomi si sono verificati nel seguente modo: ad un certo momento, aggiungendo qualsiasi nuovafunzione virtuale alla classe, incluso il tipo più semplice
virtual bool ABC12345() const { return ( true ); }

ha iniziato a causare un errore: ',' - token inaspettato..., con un riferimento ad una linea in un'altra classe - molto prima dell'aggiunta specificata, dove non c'erano errori prima ed ex5 funzionava bene. Allo stesso tempo, un'aggiunta simile senza la parola chiave virtuale non ha causato errori. Cambiare i nomi, i parametri - non ha avuto alcun effetto. Poi ho provato ad aggiungere solo - una semplice classe (senza quanto detto sopra)

class A {};

stesso errore. Il paradosso, ma dopo aver aggiunto la settima classe semplice l'errore è scomparso. E non erano i nomi delle classi ad avere un effetto, ma solo il loro numero. Ma quando si aggiunge l'esempio con il virtuale l'errore si è verificato di nuovo. Da #define c'era solo

#define PrintNotEmpty( a, b )   _PrintNotEmpty( b, a )
L'analisi ha rivelato che all'interno della funzione, usando il template è stata usata una variabile, precedentemente dichiarata come static const string, questo potrebbe essere stato il motivo - dopo la sostituzione con const string l'errore è scomparso e non si sta verificando ora.
 

Codice aggiunto - lo stesso errore è apparso di nuovo - può essere risolto aggiungendo una classe vuota

class B {};
A quanto pare c'è un numero critico di loro
 

Ultimo risultato: le conclusioni precedenti non sono corrette

Per far sparire l'errore - basta aggiungere una qualsiasi linea significativa (non un commento) ovunque in mq5, per esempio

#define XXXXXXXXXXXXX 15
Lefunzioni virtuali in ex5 funzionano bene finora. Il problematico mq5 è stato salvato fino alla prossima revisione di ME5
 
È meglio che mandi il file del problema su cd. Sarebbe più utile.
 
Tra un mese :) in tempo per Natale
 
sergeev:
È meglio che mandi il file del problema su cd. Avrebbe più senso.
Questo errore è già stato rilevato e corretto.
 
mql5:
Questo errore è già stato rilevato e corretto.

 

Domanda: il ritardo min (minimo richiesto) tra le chiamate è documentato

        OrderSend( request, result );
        Sleep( n );
        bool isOK = OrderSelect( result.order );
La domanda ha a che fare con il fatto che quando n = 0 -> isOK = falso, e quando n = 200 -> isOK = vero