Errori, bug, domande - pagina 1707
![MQL5 - Linguaggio delle strategie di trading integrato nel client terminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Al puntatore viene assegnato rvalue, che viene poi sovrascritto con il nuovo A.
Dove? Proprio qui?
questo[0] = nuovo A;
Qui operator[] restituisce il valore contenuto nella cella Data[0]. Non un riferimento a questa cella o un puntatore ad essa, ma solo una copia del valore contenuto in questa cella, cioè rvalue. Niente può essere assegnato a questa copia, ovviamente. Non capisco come operator= cambi questo.
E ancora non capisco l'ultimo esempio. Sovraccaricando l'operatore "=" nella classe A si trasforma questo[0] da rvalore a lvalore... Non riesco a capire come. È una specie di caratteristica di MCL, non c'è questo comportamento nei professionisti.fxsaber, come sei arrivato a questo costrutto? Voglio dire sovraccarico = in A. O per tentativi ed errori?
Forum sul trading, sistemi di trading automatico e test di strategia
Biblioteche: TypeToBytes
fxsaber, 2016.09.21 21:25
Pubblicato. Ora per qualsiasi variabile (struttura o tipo standard) non solo la lettura funziona come con l'array, ma anche la scrittura:
_W(AnyVariable)[Pos] = AnyValue; // Записывает по байтовому смещению Pos значение AnyValue в переменную AnyVariable
Non era facile da indovinare prima dell'implementazione - probabilmente si è rivelato un buon test di competenza media OOP: conosco solo i classici per le classi.
Se qualcuno conosce qualcosa di simile, per favore condivida il link per l'educazione.
Con piena comprensione l'ho fatto. Altrimenti non avrei scritto una cosa del genere.
Quindi lei capisce tutto, ma non può dire nulla? )) Capisco.
Dove? Proprio qui?
questo[0] = nuovo A;
Qui operator[] restituisce il valore contenuto nella cella Data[0]. Non un riferimento a questa cella o un puntatore ad essa, ma solo una copia del valore contenuto in questa cella, cioè rvalue. Niente può essere assegnato a questa copia, ovviamente. Non capisco come operator= nella classe A cambi questo.
Forse si tratta di quegli stessi problemi con i riferimenti in MCL.
Potrebbe risultare che non è il valore restituito qui, ma piuttosto un riferimento ad esso, cioè lvalue... Ma perché non può essere assegnato subito un nuovo valore, perché abbiamo bisogno di operator= nella classe A? Non capisco...
Probabilmente, si tratta delle stesse cose di riferimento in MKL.
Potrebbe risultare che non è un valore che viene restituito qui, ma un riferimento ad esso, cioè lvalue... Ma perché non può essere assegnato subito un nuovo valore, perché abbiamo bisogno di operator= nella classe A? Non capisco...
Quando si assegna qualcosa a un rvalue-pointer, il puntatore viene automaticamente castato a un riferimento di oggetto. Beh, tutti sono nati ieri!
L'ho chiesto al Desk per molto tempo, ma dicono che non è sicuro, anche se in realtà non è più pericoloso che passare argomenti per riferimento.
Quando si assegna qualcosa a un rvalue-pointer, il puntatore viene automaticamente convertito in un riferimento a un oggetto. È come ieri, vero?
Mancata corrispondenza del tipo
MqlTick time_msc - lungo.
CopyTicks da - ulong.