Cuestión de mecanografía - página 5

 
Ilya Malev:
P.D., ah, es decir, querías sobrecargar un operador binario como unario (2-binario como 1-binario), entonces sí, por supuesto que no una fecha. La única excepción es [].

Sí, en MQL está rígidamente prescrito qué y cómo sobrecargar, en C++, no importa qué sobrecargar, lo llamarás de la misma manera - si sobrecargas ^ como unario, lo usarás como unario en el futuro

 
Igor Makanu:

Sí, en MQL está estrictamente especificado qué y cómo sobrecargar, en C++ no importa qué sobrecargar, puedes llamarlo de la misma manera - sobrecargas ^ como unario y lo usarás como unario en el futuro.

Sí, parece que todavía hay muchas limitaciones en mql, así que hay margen de mejora :)

También me gustaría la posibilidad de sobrecargar las operaciones binarias como unarias (y viceversa).

Ya que en cualquier caso, al sobrecargar su significado original a menudo se pierde, respectivamente, la lógica de uso ya no está asociada a este significado. Lo lógico sería permitirlo.

 
Ilya Malev:

Sí, parece que todavía hay muchas restricciones en mql, hay margen de mejora :)

Hay muchas, y estas limitaciones aparecen, luego desaparecen, luego cinco... parece que los desarrolladores a veces cambian el entorno de desarrollo ))))

Como ejemplo, en la Ayuda, en la sección de operaciones de sobrecarga (operador) ahora no se compilan ejemplos de trabajo con matrices, si bien sé que antes funcionaban, ahora hay una comprobación del tipo de parámetros que participan en la sobrecarga de operaciones, es decir, si tengo

int operator*(const int) entonces int operator*(int) no compilará y había un ejemplo así en la ayuda, que dejó de compilar

 
Ilya Malev:

Estimados programadores, llevo mucho tiempo dándole vueltas a una pregunta. ¿Es posible ingeniárselas de alguna manera y hacer una tipificación implícita del valor de retorno de la función? Para que el método de la clase devuelva un valor de un tipo diferente con la identidad externa de la llamada a los métodos.

Y puedo preguntar: ¿para qué lo necesita? ¿No se puede construir una nave estelar sin ella?

 
Vasiliy Sokolov:

¿Puedo preguntar para qué lo necesita? ¿No se puede construir una nave estelar sin ella?

Y puedo preguntar: ¿Cuál es su interés en ello?

 

Y por cierto, ni siquiera es una sobrecarga del tipo de retorno.

En general, esta idea está muy lejos de ser viable.

 
Vasiliy Sokolov:

¿Puedo preguntar para qué lo necesita? ¿No se puede construir una nave estelar sin ella?

Yo también fui crítico al principio, pero luego pensé que también podría usarlo para mí:

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:

Y por cierto, ni siquiera es una sobrecarga del tipo de retorno.

¿Capitán Obvio al resque?

 
Ilya Malev:

¿Capitán Obvio al resque?

Shift+Alt si lo has olvidado.

 
C# tiene conversiones explícitas e implícitas. Parece ser azúcar conveniente, pero muy implícito y IntelliSense será silencioso. En un mes olvidarás qué clase se puede convertir en qué. Un juego OOP en general, pero bonito.
Razón de la queja: