
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Ho ottenuto "stack overflow" )
Immagino che sia uno scarafaggio dopo tutto...Beh, questo non è il compilatore, ma a runtime, e il compilatore dovrebbe reagire.
Ecco cosa ho provato in VS 2010:
Ottengo un errore di compilazione: Errore 1 errore LNK2001: simbolo esterno non risolto "public: virtual __thiscall A::f2(void)".
Ma Metaeditor non dice una parola. Non va bene.
Questo è il modo in cui il compilatore dovrebbe reagire.
Ho provato questo in VS 2010:
Ottengo un errore di compilazione: Errore 1 errore LNK2001: simbolo esterno non risolto "public: virtual __thiscall A::f2(void)".
Metaeditor non dice una parola. Non va bene.
Alexey, per favore spiegami, perché se mql è una copia di C, deve essere assolutamente identico e un passo a sinistra, un passo a destra - plotone d'esecuzione?
Solo perché gli sviluppatori sono stati negligenti? Ma qualsiasi linguaggio è costruito su cicli e condizioni. Tutto il resto è nel trailer. Perché nessuno pretende che qualsiasi altro linguaggio sia simile al C nella parte OOP o in qualsiasi altro modo?
Alexey, puoi spiegarmi sulle tue dita perché se mql è come C, allora deve essere assolutamente identico e un passo a sinistra, un passo a destra - plotone d'esecuzione?
Solo perché gli sviluppatori sono stati negligenti? Ma qualsiasi linguaggio è costruito su cicli e condizioni. Tutto il resto è nel trailer. Perché nessuno pretende che qualsiasi altro linguaggio sia simile al C nella parte OOP o in qualsiasi altro modo?
Puoi mostrarci un esempio in cui tutto questo può facilitare la scrittura del codice, accorciarlo o almeno proteggerlo dagli errori? E per favore, non funzioni astratte, ma funzioni vicine alle reali condizioni di trading in un Expert Advisor o indicatore.
Assolutamente no. I ragazzi stanno solo cercando di trasformare le loro fantasie in realtà.
Assolutamente no. I ragazzi stanno solo cercando di trasformare le loro fantasie in realtà.
Sì, ma ho usato un'opzione alternativa per molto tempo: tutte le interfacce sono originariamente progettate come una classe template intermedia:
In questo modo si può creare una catena di eredità composta da un numero qualsiasi di tali interfacce. Sì, ovviamente non puoi fare dynamic_cast con loro, ma non è così spesso necessario. Il compito principale è quello di passarli nelle funzioni.L'ho letto attentamente, è una mossa interessante, comunque. Non ci avevo pensato prima =) Sperimenterò anch'io, a mio piacimento...
Per me, quindi esercizio molto utile - per allungare la fantasia sulla realtà. Questo è il punto dello sviluppo!
Gli sviluppatori ci hanno ascoltato e hanno deciso di correggere questo bug su cui tutti hanno inciampato per anni.
Ma l'atteggiamento distruttivo di alcuni utenti del forum è certamente sorprendente - non si sviluppano e cercano di ostacolare gli altri con notevole persistenza.
>> Sì, ovviamente non si può fare dynamic_cast con loro, ma non è una necessità così frequente.
Perché non lo fai tu, nessun problema ) Ma poi appare il tuo incubo principale - il non rilevamento degli errori di casting in fase di compilazione :)
>> Sì, ovviamente non si può fare dynamic_cast con loro, ma non è una necessità così frequente.
Perché non lo fai tu, nessun problema ) Ma poi appare il tuo incubo principale - il non rilevamento degli errori di casting in fase di compilazione :)
Dopo tutto, la catena di eredità potrebbe essere in qualsiasi modo: Interface<CBase> o Interface<C<B<A<CBase>>>>, ci sono innumerevoli varianti. Dovremo lanciare CBase in modo coerente a tutte le possibili varianti, il che non è realistico.
Ricordo di aver pianificato di implementare la memorizzazione delle informazioni sulle interfacce nell'oggetto classe stesso, e in aggiunta ai pad di interfaccia esistenti, fare classi di interfaccia indipendenti che avrebbero funzionato come un wrapper sopra il nostro pad. Ma poi sono arrivato alla conclusione che tutto questo era inutile e superfluo. In pratica, non ho mai visto la necessità di lanciare una classe base a qualsiasi interfaccia, semplicemente non ha alcun senso. L'unica opzione è scoprire se la classe supporta questa interfaccia per scopi di debug, ma non abbiamo bisogno del casting per questo.