
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
Ti riferisci alla loro libreria standard? )
No, voglio dire che in MQL non si può dichiarare un metodo virtuale astratto senza implementazione. In MQL, i metodi virtuali di una classe base devono sempre avere un'implementazione, il che è irto dei problemi che hai menzionato.
Non ci sono molte interfacce di base in C#
In realtà ce ne sono molti.
Non è tutto negativo, secondo me. Non ci sono così tante interfacce principali di base in C#, secondo me (non sono uno specialista di C#), che non puoi ridurre i loro metodi a una superclasse di base e poi ereditare quello che ti serve.
P.S. Implementare qualcosa di multiplo attraverso costruzioni come <<<<>>>> è un po' una rottura di palle. Meglio fare le funzioni attraverso gli operatori, per esempio a==b chiama a.compareto( b ), a[comparer]==b chiama comparer.compare(a,b) ecc.Imho, sarebbe un'accozzaglia terribile.
+ La chiamata di metodi virtuali non è libera.No, voglio dire che in MQL non si può dichiarare un metodo virtuale astratto senza implementazione. In MQL, i metodi virtuali di una classe base devono sempre avere un'implementazione, il che è irto dei problemi che hai menzionato.
Non sono sicuro del perché non si possa dichiarare senza implementazione? I metodi delle classi astratte sono stati supportati in MQL per anni.
1. In effetti, ce ne sono molti.
2. imho, sarebbe un'accozzaglia terribile.
+ La chiamata di metodi virtuali non è gratuita.1. Lo saprò.
2. Vediamo cosa succede, se riesco a fare bene quello che sto facendo ora, lo posterò sul forum).
Non gratis, sì. Qualsiasi soluzione OOP universale risulta essere costosa, ma se il tuo scopo è quello di costruire facilmente e meravigliosamente semplici Expert Advisor e indicatori (senza caratteristiche speciali), allora ne vale la pena, imho.
Non capisco davvero perché non si può dichiarare senza implementazione? I metodi delle classi astratte sono stati supportati in MQL per anni.
Perché una voce come questa causerà un errore di compilazione:
Perché una voce come questa causerà un errore di compilazione:
E la persona ha pensato che è impossibile dichiarare un tale metodo in MQL, per quanto ho capito dal suo post.
Poche persone lo sanno (ancora meno quelle che lo sanno e lo usano), ma lefunzioni virtuali pure possono avere un corpo
Devono anche essere sovraccaricati nella classe discendente
Poche persone lo sanno (ancora meno lo sanno e lo usano), ma lefunzioni puramente virtuali possono avere un corpo
Devono anche essere sovraccaricati nella classe discendente
Quindi le interfacce possono ancora avere il proprio codice di metodo? Si può chiamare in qualche modo? )
Mi sono imbattuto in questo di recente...
p.s. Ho provato ora però... Anche se A::f2() non ha corpo, il compilatore non reagisce a tale chiamata. Cioè devo catturare un errore più tardi nel runtime. Niente da fare.
Hmm, caratteristica interessante... Immagino sia un metodo predefinito, solo per essere chiamato nei discendenti di A::f2().
Testato - hai ragione in generale =)
p.s. Anche se ho provato ora... Anche se A::f2() non ha corpo, il compilatore non reagisce a tale chiamata.
A quanto pare è uno scarafaggio dopo tutto...