Domanda sulla digitazione - pagina 5

 
Ilya Malev:
P.S., ah, cioè volevi sovraccaricare un operatore binario come uno unario (2-ario come 1-ario), allora sì, naturalmente non una data. L'unica eccezione è [].

Sì, in MQL è rigidamente prescritto cosa e come sovraccaricare, in C++, non importa cosa sovraccaricare, lo chiamerai allo stesso modo - se sovraccarichi ^ come unario, lo userai come unario in futuro

 
Igor Makanu:

Sì, in MQL è strettamente specificato cosa e come sovraccaricare, in C++ non importa cosa sovraccaricare, si può chiamare allo stesso modo - si sovraccarica ^ come unario e si userà unario in futuro.

Sì, sembra che ci siano ancora molte limitazioni in mql, quindi c'è spazio per migliorare :)

Vorrei anche la possibilità di sovraccaricare le operazioni binarie come unarie (e viceversa).

Poiché in ogni caso, quando si sovraccarica il loro significato originale è spesso perso, rispettivamente, la logica d'uso non è più associata a questo significato. Sarebbe logico permetterlo.

 
Ilya Malev:

Sì, sembra che ci siano ancora molte restrizioni in mql, c'è spazio per migliorare :)

Ce ne sono molti, e queste limitazioni appaiono, poi scompaiono, poi cinque... sembra che gli sviluppatori a volte cambino l'ambiente di sviluppo ))))

Per esempio, nella Guida, nella sezione operazioni di sovraccarico (operatore) gli esempi di lavoro con le matrici ora non vengono compilati, mentre so che prima funzionavano, ora c'è un controllo per il tipo di parametri coinvolti nel sovraccarico delle operazioni, cioè se ho

int operator*(const int) allora int operator*(int) non compilerà e c'era questo esempio nella guida, che ha smesso di compilare

 
Ilya Malev:

Cari programmatori, è da molto tempo che mi tormenta una domanda. È possibile in qualche modo escogitare e rendere implicita la digitazione del valore di ritorno della funzione? In modo che il metodo della classe restituisca un valore di un tipo diverso con l'identità esterna della chiamata dei metodi.

E posso chiedere: per quali scopi vi serve? Non si può costruire un'astronave senza?

 
Vasiliy Sokolov:

Posso chiederle a cosa le serve? Non si può costruire un'astronave senza?

E posso chiedere: qual è il suo interesse?

 

E a proposito, non è nemmeno un sovraccarico del tipo di ritorno.

In generale, questa idea è molto lontana dall'essere realizzabile.

 
Vasiliy Sokolov:

Posso chiederle a cosa le serve? Non si può costruire un'astronave senza?

All'inizio ero anche critico, ma poi ho pensato che avrei potuto usarlo anche per me:

class Point {
public:
   double price;
   long time;
   operator double()const {return price;}
   operator long()const {return time;}
};

class Array {
   Point p[3] = {{0,1}, {2,3}, {4,5}};
public:
   const Point &operator[](unsigned i) {return p[i];}
};

void start()
{
   Array a;
   double d = a[2];  // d == 4
   long t = a[2];    // t == 5
}
 
Dmitry Fedoseev:

E a proposito, non è nemmeno un sovraccarico del tipo di ritorno.

Capitan Ovvio al resque?

 
Ilya Malev:

Capitan Ovvio al resque?

Shift+Alt se l'avete dimenticato.

 
C# ha conversioni esplicite e implicite. Sembra essere uno zucchero comodo, ma molto implicito e IntelliSense sarà silenzioso. In un mese dimenticherete quale classe può essere convertita in cosa. Un gioco OOP in generale, ma bello.