Libreria di classi generiche - bug, descrizione, domande, caratteristiche d'uso e suggerimenti - pagina 27
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
Per cosa si creano le collezioni, per le collezioni e la cancellazione automatica degli oggetti)? Non ho parlato affatto di funzionamento manuale. Da dove l'hai preso?).
Studiate STL e capirete di cosa sto parlando.
come copiare correttamente, puoi dare un esempio per questo modello?
Ho usato l'aiuto per scrivere il metodo AddValuehttps://www.mql5.com/ru/docs/basis/types/classes
Mi sono scervellato, ma non vedo altra soluzione in MQL che quella che ho scritto nel mio esempio!
Mostratemi la vostra implementazione della corretta memorizzazione dei dati.
Ma questa soluzione è comunque sbagliata. Una soluzione normale è usare qualcosa come STL. Nel vostro caso std::list.
Penso che MQL5 non lo limiti. Potete provare a tradurre i sorgenti STL dallo stesso VS a MQL
Questo è quello che intendo nel tuo caso.
Ma è ancora la soluzione sbagliata. La soluzione normale è usare qualcosa come STL. Nel vostro caso std::list.
Non credo che MQL5 non lo limiti. Si potrebbe provare a tradurre il codice sorgente STL da VS a MQL
Ancora una volta: MQL non è C++,
e un puntatore a un oggetto in MQL è in effetti un handle, e un puntatore in C++ è un indirizzo di memoria fisica.
che senso ha fare il porting delle librerie C++ su MQL?
Ancora una volta: MQL non è C++,
e un puntatore a un oggetto in MQL è infatti un handle, e un puntatore in C++ è un indirizzo di memoria fisica
che senso ha fare il porting delle librerie C++ su MQL?
Per implementare correttamente i design pattern invece di creare potenziali problemi usando i generici.
Sarai sorpreso, ma anche i puntatori per il sistema operativo sono virtuali. Dovete ancora convertirli in quelli fisici, ma questo è un livello di lavoro completamente diverso con i puntatori.
Non sarete in grado di portare 1 in 1, ma penso che sarete in grado di portare un C++03 spogliato. È disponibile il supporto di modelli e operatori.
1. Potreste essere sorpresi, ma anche i puntatori per il sistema operativo sono virtuali. Hanno ancora bisogno di essere convertiti in quelli fisici, ma questo è tutto un altro livello di gestione dei puntatori.
2. Non sarete in grado di fare il porting di 1 in 1, ma sarete in grado di fare il porting dello stripped-down C++03. C'è anche il supporto di modelli e operatori.
1. Non sarei sorpreso
2. Beh, ecco la verità - anche se vi mettete insieme e fate un port da C++, causerà comunque delle domande, ma perché non come nell'originale? - qual è il punto?
C'è una libreria standard di MQL, usandola almeno una sorta di garanzia che il supporto sarà fornito dagli sviluppatori in futuro. Sono già stato bruciato un paio di volte - ho usato componenti grafici da articoli scritti qualche anno fa, è facile da usare, molto simile a lavorare con componenti Delphi, ma quando ho iniziato a cercare di implementare progetti più seri ho avuto un sacco di domande e nessuna risposta dall'autore dell'articolo
Non ricordo chi dei programmatori di spicco ha detto, ma qualcosa del genere: il codice non deve essere bello o leggibile, deve compiere il suo scopo
nella nostra discussione, se non mi sbaglio, volevi memorizzare una struttura con i tuoi dati in liste, ti ho mostrato la mia implementazione, che ho sviluppato per lo stesso compito - la mia implementazione funziona? - causa errori di runtime nei programmi MQL? - Sono curioso di scoprire nel corso della conversazione
Andrey Pogoreltsev:
C++03 è possibile, credo. È disponibile il supporto per modelli e operatori.
Beh sì, buona fortuna ))
Il codice non deve essere bello o leggibile, deve fare il suo lavoro
Questo è vero solo finché non si vuole raffinare.
Ho già sottolineato questo bug nella classe CLinkedList, ma lo ripeterò. I nodi di inizio e fine della lista sono chiusi l'uno all'altro: Next dell'ultimo nodo punta al primo nodo, mentre Previous del primo nodo punta all'ultimo. Come risultato, il ciclo di ricerca standard si trasforma in un ciclo infinito:
In C# tale assurdità non è naturalmente osservata. Il Next dell'ultimo nodo è zero, così come ilPrevious del primo nodo.
Non so se è una "caratteristica" inventata dagli sviluppatori (anche se non ne vedo l'utilità), ma in ogni caso il comportamento della libreria dovrebbe corrispondere a quello originale.
Ho già sottolineato questo bug nella classe CLinkedList, ma lo ripeterò. I nodi di inizio e fine della lista sono chiusi l'uno all'altro: Next dell'ultimo nodo punta al primo nodo, mentre Previous del primo nodo punta all'ultimo. Come risultato, il ciclo di ricerca standard si trasforma in un ciclo infinito:
In C#, naturalmente, non ci sono queste sciocchezze: il Next dell'ultimo nodo è zero, così come ilPrevious del primo nodo.
Non so se questa è una "caratteristica" inventata dagli sviluppatori (anche se non ne vedo alcun beneficio), ma in ogni caso il comportamento della libreria dovrebbe corrispondere all'originale.
Che diavolo sta succedendo di nuovo qui? Stanno cancellando dei post di LinkedList perfettamente validi. Proprio così, da qualche parte in Europa, un moderatore anonimo sta cancellando i post degli odiati russi mentre sghignazza maliziosamente. Che discarica, ti fa passare la voglia di scrivere.