Errores, fallos, preguntas - página 2420

 

¿Por qué mql5 movería la semántica? No hay necesidad de tal optimización del rendimiento, especialmente porque es una máquina virtual. ¿Para qué más lo necesitas?)

Por sí mismo, mql5 es muy diferente de C++, así como deC++98, y aún más de C++11/14/17, pero sus capacidades ahora cubren completamente las cosas que necesitas para crear un EA.

 
Andrey Pogoreltsev:

pero sus capacidades ahora cubren completamente las cosas que necesitas para crear un EA.

Esas necesidades las cubrían incluso hace 6 años en el antiguo MQL4, si es que tienes idea del nivel que tenía el lenguaje en esa época. Nosotros escribíamos EAs en él, y algunos todavía codifican en ese estilo arcaico. Así que todo es relativo.

¿Con qué otro fin se introduciría)?

Esto se ha discutido durante las últimas páginas del hilo.
 

Aquí da un error:

void OnStart()
  {
   struct sA
     {
      int               ii[51];
     };
   struct sB
     {
      string            name;
      sA                distrib;
     };
   sB f;
  }
'distrib' - struct undefined    Test2.mq5       21      25

No es así:

void OnStart()
  {
   struct sA
     {
      int               ii[51];
     };
   struct sB
     {
      //string            name;
      sA                distrib;
     };
   sB f;
  }

Esto tampoco funciona:

struct sA
  {
   int               ii[51];
  };
struct sB
  {
   string            name;
   sA                distrib;
  };

void OnStart()
  {
   sB f;
  }

Adjunto un script para reproducir el error, un script vacío con un par de líneas de código como el anterior.

Archivos adjuntos:
Test2.mq5  1 kb
 

Bueno, eso no tiene ningún sentido:

class A
  {
   class B
     {
      class C
        {
         class D
           {
            class E
              {
               bool              YES;
              };
           };
        };
     };
  };
void OnStart()
  {
   E g;
  }

La clase E no merece ser tan popular.

Se compila sin ningún error.

 
¿Es un error del compilador?
class A
{
private:
  int i;
};

class B : public A
{
public:  
  void f( int i ) {} // declaration of 'i' hides member declaration at line 4
};
 
fxsaber:
¿Es un error del compilador?
¿Podría ser el molesto parloteo de un formador sobre tonterías que distraen de los asuntos serios?
 
fxsaber:
¿Es un error del compilador?
en los pluses lo mismo
 
Vict:
¿Tal vez un molesto formador hablando de tonterías, distrayéndote de las cosas serias?

cuando estés en medio de su entusiasmo, ¿me lo dirás entonces?

 
fxsaber:
¿Es un error del compilador?

Es algo lógico.

¿Cómo pueden ser privados los parámetros de entrada en una función pública? Conflicto de intereses.

Si este parámetro privado se va a utilizar dentro de esta función, no es necesario declararlo como entrada, porque ya existe.

Si se supone que es otra variable, por supuesto habrá un conflicto de nombres dentro de la función con la variable privada existente y por lo tanto tiene que ser llamado por un nombre diferente.


ZS Resulta que no importa si es i público o privado. Es un conflicto de nombres trivial. Dentro de la función f habrá incertidumbre sobre qué es i - parámetro de entrada o variable global de la clase padre.

 
Nikolai Semko:

la pregunta implicaba que no podemos acceder al miembro debido a la privacidad, pero el conflicto de nombres sigue siendo mostrado por el compilador.

como he escrito, los pluses se comportan exactamente igual, es decir, no hay ningún error en el compilador y todo va bien.