L'esperimento ha mostrato che il numero nel buffer grafico è rappresentato dalle stesse regole del doppio - cioè non è possibile passare un numero così lungo attraverso il buffer grafico - frustrante.
Ahimè, il buffer grafico può contenere solo un numero di 10 cifre.
class A { public: int i; }; class B : public A {}; class C : protected A {}; class D : protected B {}; voidOnStart() { C c; Print( c.i ); //Error: 'i' - protected member access error D d; Print( d.i ); //нормально??? }
fxsaber: Quindi non hai risposto alla domanda - per cosa?
Se tutti i distruttori in MQL sono virtuali, allora la domanda perché abbiamo bisogno di un distruttore virtuale si riduce a: a cosa ci serve un distruttore? E questa è una domanda troppo generale.
A100: Se tutti i distruttori in MQL sono virtuali, allora la domanda su cosa sia un distruttore virtuale si riduce alla domanda su cosa sia un distruttore? E questa è una domanda troppo generale.
So a cosa serve un distruttore. Non mi è chiaro perché dovrei aggiungere la parola virtuale prima della sua definizione.
Guarda qui - Programma di esecuzione
Per un riassunto dei programmi in MQL5, vedere la tabella qui sotto:
Programma
Esecuzione
Nota
Script
Nel proprio thread, tanti script quanti sono i thread di esecuzione per essi
Uno script in loop non può interrompere il lavoro di altri programmi
Esperto
Nel proprio thread, altrettanti esperti - altrettanti thread di esecuzione per loro
Un esperto in loop non può interrompere il lavoro di altri programmi
Indicatore
Un thread di esecuzione per tutti gli indicatori su un simbolo. Tanti simboli indicatori - tanti thread di esecuzione per loro
Un loop infinito in un indicatore fermerà tutti gli altri indicatori su questo simbolo
Forum sul trading, sistemi di trading automatico e test di strategia
Bug, bug, domande
Slawa, 2017.02.06 07:22
Ma anche qui, non potete contare sul fatto che il comando Deinit su M5 sarà processato prima del comando Init su M15Ahimè, non ho familiarità con questo formato.
L'esperimento ha mostrato che il numero nel buffer grafico è rappresentato dalle stesse regole del doppio - cioè non è possibile passare un numero così lungo attraverso il buffer grafico - frustrante.
Ahimè, il buffer grafico può contenere solo un numero di 10 cifre.
A proposito, perché c'è un limite di 4 decimali?
Errore di compilazione (o piuttosto nessun messaggio di errore)
public:
int i;
};
class B : public A {};
class C : protected A {};
class D : protected B {};
void OnStart()
{
C c;
Print( c.i ); //Error: 'i' - protected member access error
D d;
Print( d.i ); //нормально???
}
Errore di esecuzione: caricamento EX5 fallito
typedef void (*f)( A*);
class A {
virtual void g( A *a ) {}
f ff;
};
void OnStart() { Print( __FUNCTION__ ); }
Errore durante l'esecuzione
void f( B* );
class A { public:
virtual ~A() { f((B *)&this ); } //(*)
virtual void g( A* ) { Print( __FUNCTION__ ); }
};
class B : public A { public:
virtual void g( A* ) { Print( __FUNCTION__ ); }
};
void f( B *b ) { b.g( b ); }
void OnStart() //(1)
{
B *b = new B;
delete b;
}
Risultato: casting errato dei puntatori in (*)
E se
risultato: B::g
ma qual è la differenza fondamentale tra OnStart (1) e (2)?
Inoltre, il risultato di un codice simile in C++: A::g
A100:
A cosa servirebbe un distruttore virtuale come quello del tuo esempio sopra? Può essere sovrascritto nel discendente?
A cosa servirebbe un distruttore virtuale come quello del tuo esempio sopra? Può essere sovrascritto nel discendente?
In MQL è sempre virtuale, anche se non esplicitamente dichiarato
Quindi non hai risposto alla domanda - per cosa?
Se tutti i distruttori in MQL sono virtuali, allora la domanda su cosa sia un distruttore virtuale si riduce alla domanda su cosa sia un distruttore? E questa è una domanda troppo generale.