Errores, fallos, preguntas - página 1981

 
A100:

Esto realmente no cambia nada - error de compilación (tengo una tableta - compilador Borland)

Hmm, así que hay que ir a los estándares del lenguaje y ver de quién es el compilador que la lía.
 
Alexey Navoykov:
Hmm, así que tenemos que buscar en los estándares del lenguaje y ver de quién es el compilador que la lía.
La segunda opción es similar

#ifdef __BORLANDC__
class B;
class A {
        int g( B * );
        int i;
};
class B : public A {};
int A::g( B *b ) { return b->i; } //Error: E224
#endif

VS 2010 falla porque supera lo privado mediante la conversión implícita de B* a A*


#ifdef __BORLANDC__

class B;
class A {
        int g( B * );
        int i;
};
class B : public A {};
int A::g( B *b ) { return ((A *)b)->i; } //нормально

#endif

 
Alexey Navoykov:
Hmm, así que tenemos que ir a los estándares del lenguaje y ver de quién es el compilador que la lía.
gcc 7.2 compila la última versión, comprobada aquí
Compiler Explorer - C++
  • About the author
  • godbolt.org
These settings control how Compiler Explorer acts for you. They are not preserved as part of shared URLs, and are persisted locally using browser local storage.
 
Комбинатор:
gcc 7.2 compila la última versión, comprobada aquí

El resultado es el siguiente cuadro

class B;
class A {                                       //MQL //BCC //VS2010 //gcc
        int f1( B *b ) { return       b .i;   } // -     -     +        +
        int f2( B *b ) { return       b .g(); } // +     -     +        +
        int f3( B *b ) { return ((A *)b).i;   } // +     +     +        +
        int f4( B *b ) { return ((A *)b).g(); } // +     +     +        +
        int f5()       { return       b .i;   } // -     -     +        +
        int f6()       { return       b .g(); } // +     -     +        +
        int f7()       { return ((A *)b).i;   } // +     +     +        +
        int f8()       { return ((A *)b).g(); } // +     +     +        +
//---
        int g() { return 0; }
        int i;
        B *b;
};
class B : public A {};

Y msdn dice: El control de acceso ayuda a evitar que los objetos se utilicen para fines no autorizados. Esta protección se pierde al realizar conversiones de tipo explícitas(conversiones de tipo).
 

Hola a todos.

¿Puedes decirme si hay alguna forma de eliminar la ventana del indicador que aparece en el probador de estrategias cuando la visualización está activada?

Es generado por wizarda en MT5.

He leído en la documentación de MQL5 que IndicatoRelease no funciona en Strategy Tester. (Intenté insertar esta función en OnDeinit de todos modos, empieza a quejarse de que no se ha declarado un handle. Lo declaro, genera otros errores).

¿Hay alguna otra manera?

 
Ahmet Garyagdyyev:

Hola a todos.

¿Puedes decirme si hay alguna forma de eliminar la ventana del indicador que aparece en el probador de estrategias cuando la visualización está activada?

Es generado por wizarda en MT5.

He leído en la documentación de MQL5 que IndicatoRelease no funciona en Strategy Tester. (Intenté insertar esta función en OnDeinit de todos modos, empieza a quejarse de que no se ha declarado un handle. Lo declaro, genera otros errores).

¿Hay alguna otra manera?


Puede cambiar la plantilla con todos los indicadores, a cualquiera de los previamente guardados por usted.

 
A100:

El resultado es el siguiente cuadro

VS y gcc se consideran desde hace tiempo como la referencia* (o al menos en gran medida menos propensa a los errores) que Borland. Yo mismo he utilizado Borland durante muchos años, pero basándome en sus otras ventajas.

PS. *Esta no es mi opinión personal; no la discutiré.

 

Colegas, ¿alguien se ha encontrado con intentos de implementar una biblioteca STL c++ (teniendo en cuenta las capacidades del lenguaje)? Preferiblemente con la colocación de codobase, la búsqueda dice que no, pero vrdug ... . Ciertamente no todo, pero sí algunas cosas básicas: algunos contenedores normales a través de plantillas, y ese auto_ptr (ciertamente escribí el mío propio, pero autoescribir tales primitivas es una tontería).
No entiendo por qué std µl no es una plantilla y por qué hemos tenido que inventar nuevos nombres para los métodos/clases análogos en STL.

 

He encontrado un error, no voy a insertar el texto compilado por completo, voy a sacar trozos de guión:

class Source : public CObject
{
public:
   upindex_t start, top, lstart, ltop;
};

CArrayObj sourcear;

do
{
   Source *new_src = new Source;
   new_src.start = last.start;
   new_src.top = last.top;
   new_src.lstart = prev_prev.start;
   new_src.ltop = prev_prev.top;
   if( ! sourcear.Add(new_src) )
      return;
}
while(...);

for(int i = 0;  i < sourcear.Total();  ++ i)
{
   Source cursrc = (Source*)sourcear.At(i);  //!!!!! Это не вызывает ошибки во время компиляции
}

Es decir, cast: CObject*--> Source* --> Source

¿O se trata de algún tipo de MQL específico?


ZS: y tal cadena se come:

Source new_src = new Source;

Eso es una tontería. No se copian contras/operadores en el lenguaje, no lo he desreferenciado. ¿Qué está pasando aquí?

 
pavlick_:

¿O se trata de un complicado MQL específico?

class A {};

void OnStart()
{
  A a = new A;
}

Se activa el operador de copia por defecto.