Errores, fallos, preguntas - página 1729

 
fxsaber:

Creo OBJ_CHART, y lo arrastro con el ratón por la esquina superior izquierda del gráfico. Mientras se arrastra, se llama a ObjectDelete con un resultado exitoso. MT5.

También. Si arrastro el OBJ_CHART y cambio sus propiedades de CHART (ChartNavigate, por ejemplo), entonces no hay ninguna visualización correspondiente.
 
Los comentarios que no son relevantes para este tema se han trasladado a "Cómo determinar a qué indicador pertenece cada subventana".
 
A100:

Error de compilación:

Apareció en la compilación 1447
Gracias por el post, se ha corregido el control de constancia de los parámetros pasados.

Ahora habrá un error de compilación en ambos casos, el código debe ser cambiado para evitar el error:
template<typename T>
void f1( const T* const & a[] ) {}    << добавлена константность ссылки
class A {};
void f2( const A* const & a[] ) {}    << добавлена константность ссылки
class B {
        void g1() const { f1( a ); } //error: 'f1' - cannot to apply function template
        void g2() const { f2( a ); } //нормально
        A *a[];
};
 
константность ссылки

No lo he visto en ningún sitio. ¿Es esta la norma?

 
Ilyas:
Ahora en ambos casos habrá un error de compilación, para evitar el error, el código debe ser cambiado:

Por favor, compruebe también esta contradicción (aquí enfrente - error en la parte inferior)

template<typename T>
void f1( const T& a[] ) {}
class A {};
void f2( const A& a[] ) {}
class B {
        void g1() const { f1( a ); } //нормально
        void g2() const { f2( a ); } //error: 'a' - parameter conversion not allowed
        A *a[];
};
 

¿Cómo funciona MQL5 con la memoria?

Por ejemplo, existe el siguiente código:

class Alfa {}
class Beta
  {
private:
   Alfa  *ptr_a;
   Alfa   obj_a;
public:
   Beta(void) { ptr_a = new Alfa(); }
  ~Beta(void) { delete ptr_a; }
   Metod(void) {...}
  }
//---

int OnInit(void) {
   Beta *ptr_obj = new Beta();
   Beta obj;
//---
   return INIT_SUCCEEDED;
}
void OnDeinit(const int reason) {
   delete ptr_obj;
}

según el cual se asignará memoria en el "heap" para el objeto ptr_obj, y se asignará memoria automática para el objeto obj. Si el funcionamiento del gestor de memoria MQL5 es claro para estos objetos:

1. al objetoptr_a del objetoptr_obj se le asigna memoria en el "heap".

2. La memoria para el objetoobj_a del objetoobj se asigna automáticamente

Cómo se organiza el gestor de memoria MQL5 en estos casos:

3. en qué zona de memoria se encuentra el objeto obj_a del objeto ptr_obj

4. en qué zona de la memoria se encuentra el objeto ptr_a del objeto obj

 
A100:

Por favor, compruebe también esta contradicción (aquí al revés)

Esto es correcto, aquí con la tipificación, T = A *
 
void f( const A* &Array[] );

Con esta transferencia, es posible intercambiar los elementos de la matriz (y el tamaño), pero no es posible intercambiar los elementos en sí. ¿Verdad?

void f( const A* const &Array[] );

Y aquí los elementos (y el tamaño) tampoco se pueden intercambiar. ¿Es correcto?

 
fxsaber:

No lo he visto en ningún sitio. ¿Es esta la norma?

Escrito para no escribir: debe haber una referencia a una matriz constante de punteros a objetos constantes
 
fxsaber:

Con esta transferencia, es posible intercambiar los elementos de la matriz (y el tamaño), pero no es posible intercambiar los elementos en sí. ¿Verdad?

Y aquí los elementos (y el tamaño) tampoco se pueden intercambiar. ¿Es correcto?

Sí, eso es correcto.