Errori, bug, domande - pagina 1707

 
Комбинатор:
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.

 
Sergei Vladimirov:
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?
Con piena comprensione l'ho fatto. Altrimenti non avrei sicuramente scritto una cosa del genere.

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.


 
fxsaber:
Con piena comprensione l'ho fatto. Altrimenti non avrei scritto una cosa del genere.

Quindi lei capisce tutto, ma non può dirlo? )) Capisco.
 
Sergei Vladimirov:
Quindi lei capisce tutto, ma non può dire nulla? )) Capisco.
Sì, beh, succede. Non riesco a formularlo. Ecco perché chiedo agli sviluppatori di farlo correttamente.
 
Sergei Vladimirov:

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.

A* operator []( const int Pos )
{
    return(this.Data[Pos]);
}

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...

 
Sergei Vladimirov:

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.

 
Alexey Navoykov:

Quando si assegna qualcosa a un rvalue-pointer, il puntatore viene automaticamente convertito in un riferimento a un oggetto. È come ieri, vero?

Ora lo capisco, grazie.
 
Manca la possibilità di evidenziare le righe nella barra multifunzione. Posso guardarlo, ma non posso evidenziarlo.
 
Che diavolo è questo?
2016.09.26 14:02:11.858 Books   invalid book item[RTS-12.16,buy,98090.00000,-16]
 

Mancata corrispondenza del tipo

MqlTick time_msc - lungo.

CopyTicks da - ulong.