Per esempio, un operatore di addizione può essere applicato tra riferimenti, che chiamerà operator+(...). L'aggiunta di puntatori non ha senso, perché otterremo un numero che non ha alcun uso pratico.
Questo è il modo in cui è ora (sovraccarico come per gli oggetti) e tutto sembra andare bene. Ma c'è una contraddizione tra il significativo (== e !=) e il resto
voidOnStart()
{
A *a = new A;
if ( a == a ) Print( "1" ); //сравнение указателей как чиселif ( a >> a ) Print( "3" ); //вызывается operator<<( A *)
}
Che suggeriamo di eliminare confrontando i puntatori solo attraverso la funzione speciale
voidOnStart()
{
A *a = new A;
if ( isEqualPoiner( a, a ) ) Print( "1" ); //сравнение указателей как чиселif ( a == a ) Print( "2" ); //вызывается operator==( A *)if ( a >> a ) Print( "3" ); //вызывается operator<<( A *)
}
Ho una domanda indiscreta per te. Hai intenzione di condividere le tue esperienze?
Sei una delle poche persone che usano attivamente e costantemente modelli e macro. E probabilmente avete una grande quantità di codice accumulato.
Non so gli altri, ma sarei molto interessato a vedere il vostro codice e i vostri sviluppi, se ne avete, che non vi dispiace condividere con il pubblico.
Non so... l'implementazione di modelli, i vostri wrapper per lavorare con indicatori, grafici, qualsiasi cosa...
Quali operazioni con i puntatori non sono senza senso?
Questo è il modo in cui è ora (sovraccarico come per gli oggetti) e tutto sembra andare bene. Ma c'è una contraddizione tra il significativo (== e !=) e il resto
come
Che suggeriamo di eliminare confrontando i puntatori solo attraverso la funzione speciale
Una funzione speciale per confrontare i puntatori può essere progettata come segue
Ho una domanda indiscreta per te. Hai intenzione di condividere le tue esperienze?
Sei una delle poche persone che usano attivamente e costantemente modelli e macro. E probabilmente avete una grande quantità di codice accumulato.
Non so gli altri, ma sarei molto interessato a vedere il vostro codice e i vostri sviluppi, se ne avete, che non vi dispiace condividere con il pubblico.
Non so... l'implementazione di modelli, i vostri wrapper per lavorare con indicatori, grafici, qualsiasi cosa...
Come si usano i modelli? - Per abbreviare una voce. Per esempio, non esiste un'operazione virgola in MQL. Diciamo che c'è un record
Poi avere un modellotemplate<typename T 1, typename T 2> T2 opComma( T1 expression, T2 assignment_expression ) { return ( assignment_expression ); }invece di 4 linee ne abbiamo una sola
Come si usano le macro? - Di nuovo - per abbreviare il record. Per esempio, non ci sono modelli di classe in MQL. Non è un problema - usiamo una macro
sarà poi sufficiente dichiarare
datetime dt; MDT( dt_struct, dt )La copia bitwise, per esempio, è implementata tramite modelli, dato che diversi tipi possono essere coinvolti contemporaneamente