Errores, fallos, preguntas - página 2326

 
TheXpert:
ahora no hay concepto, un objeto y un puntero a él se mezclan en un montón

Esto permite que los punteros se manejen como objetos, lo que en algunos casos da una notación más sencilla y clara sin *

y dichos punteros también pueden utilizarse como referencias

Y ahora se proponen destruirlo todo y volver a la Edad de Piedra en aras de no se sabe qué

 
A100:

Y ahora proponen destruirlo todo y volver a la Edad de Piedra para quién sabe qué.

Bueno, esa es tu opinión. Yo pienso exactamente lo contrario.

 
TheXpert:

Bueno, esa es tu opinión. Yo pienso exactamente lo contrario.

¿Qué es exactamente lo que no te gusta? ¿Que un puntero en MQL es en realidad una referencia? Y la aritmética de direcciones en MQL no tiene sentido, ¡y por eso no se usa!
 

A100:
А что конкретно Вас не устраивает? Что в MQL указатель это фактически ссылка?

en realidad eso no es cierto )

Mientras que en MQL la aritmética de direcciones no tiene sentido y por lo tanto no se utiliza?

los punteros inteligentes tampoco tienen aritmética de direcciones, pero se utilizan por alguna razón
 
TheXpert:

en realidad no lo es )

los punteros inteligentes tampoco tienen aritmética de direcciones, pero se utilizan por alguna razón

Estrictamente hablando, no, pero en ausencia de aritmética de direcciones, un puntero MQL está más cerca (o al menos no más lejos) de una referencia C++ que de un puntero C++

Y si es así, la sintaxis debe conservarse en consecuencia (sin *)

 
Ilyas:

No, no había razones serias.

La única justificación de su ausencia es cuidar las frágiles mentes de los usuarios no familiarizados con C++.

 
A100:

Estrictamente hablando, no lo es, pero en ausencia de aritmética de direcciones el puntero/mQL está más cerca (o al menos no más lejos) de una referencia C++ que de un puntero C++

Y si es así, la sintaxis debe ser almacenada en consecuencia (sin *)


 
A100:

¿Por qué hacerlo tan complicado? Basta con que . y -> sean registros equivalentes, intercambiables

En sentido figurado.

Si los haces intercambiables, simplemente no necesitas los dos.

En C++, esto es posible:

class A
{

public:
   void f();
};

class PtrA
{
  A* mPtr;

public
   PtrA( A* a ) : mPtr( a ){}

   A* operator->()
   {
      return mPtr;
   }

   void f();
};

PtrA a( new A );

a.f();   //  Это две разные функции
a->f();  //
 

El operador -> debería añadirse realmente al lenguaje, en primer lugar por motivos de compatibilidad con los códigos C++ y, en segundo lugar, para permitir la sobrecarga (que es útil para los punteros inteligentes).

El punto es un operador universal en MQL.

 

¿Por qué MQL no ha corregido el error de que una clase base se lance implícitamente a una clase derivada? ¡Ni siquiera una advertencia del compilador!

class A {  };

class B : public A { };

A a;

B* b= &a;  // Нет ошибки