Errores, fallos, preguntas - página 2697

 
Stanislav Korotky:

¿Declarar una clase dentro de una función?

Sin plantillas, funciona.

 
Bug MT5(build 2375) error de compilación al llamar a una función a través de su puntero, cuando se utiliza un array de punteros a una función:

#define  PRINT(x) ; Print(#x, ":", string(x))

void test(){
   PRINT(__FUNCSIG__);
}

template<typename T>
void call(T f_ptr){
   f_ptr();
}


template<typename T>
class A{
public:
   T arr_1[1];
   
   typedef void (*ff)();
   ff arr_2[1];  
   
   
   T test_1(){
      return arr_1[0];
   } 
   
   ff test_2(){
      return arr_2[0];
   } 
   
   T operator[](int index){
      return arr_1[index];
   }
};

void OnStart(){
   typedef void (*ff)();
   ff arr[1];
   arr[0] = test;   
   
   ff f_ptr = arr[0];
   f_ptr();             //Ok
   call(arr[0]);        //Ok
   arr[0]();            //Compile Error: ')' - expression expected   
   
   
   A<ff> a;             
   a.arr_1[0] = test;
   a.arr_2[0] = test;
   
   
   a.arr_1[0]();        //Compile Error: ')' - expression expected   
   a.arr_2[0]();        //Compile Error: ')' - expression expected   
   
   a.test_1()();        //Compile Error: ')' - expression expected   
   a.test_2()();        //Compile Error: ')' - expression expected   
   
   a[0]();              //Ok ???
}


 
Sergey Dzyublik:
MT5(build 2375) error de compilación al llamar a una función a través de su puntero, cuando se utiliza una matriz de punteros a una función:

Un bicho muy antiguo.

 

Algún consejo - en las ventanas de archivos abiertos del MetaEditor, ¿dónde se guarda su lista para abrirlos después?

De vez en cuando ME se abre desde cero, aunque antes había un montón de archivos abiertos. Podría ser debido a las actualizaciones.

Quiero hacer una copia de seguridad manual de la lista, o tal vez alguna otra solución?

 
Aleksey Mavrin:

Algún consejo - en las ventanas de archivos abiertos del MetaEditor, ¿dónde se guarda su lista para abrirlos después?

De vez en cuando ME se abre desde cero, aunque antes había un montón de archivos abiertos. Podría ser debido a las actualizaciones.

Quiero hacer una copia de seguridad manual de la lista, o tal vez alguna otra solución?

Hay una lista en el registro, hay una lista en el archivo ini "metaeditor.ini" a través de ME ==> Archivo - Abrir carpeta de datos (Ctrl + Shift + D) ==> Config ==> metaeditor.ini
Es más probable que necesites la segunda.

 
fxsaber:

Un bicho muy antiguo.

Recuerdo con seguridad que una vez funcionó como debía.
Fui a comprobarlo y añadí algunas variantes más de llamar a los punteros a una función desde su matriz.

Resulta que todo funciona cuando el array de punteros a una función está dentro de una clase y se accede al elemento específico del array mediante el operador[].
Al mismo tiempo, si se utiliza una función ordinaria para acceder a un elemento, vuelve a producirse un error de compilación... Es un milagro...

 
¿Hay alguna forma de anular el cambio de escala automático del indicador? Es decir, digamos que hay dos gráficos en la subventana del indicador, ¿es posible hacer el cambio de escala en el eje vertical en un gráfico y no en el segundo? Para que el segundo gráfico no afecte al reescalado.
 
Bug MT5(build 2375), a pesar de la especialización explícita cuando se llama a la función de plantilla sobrecargada, se sigue llamando a la función de plantilla por defecto, lo que provoca un desbordamiento de pila.
C++ en línea(https://onlinegdb.com/BJTFdUDD8)
template<typename T>
void test(T &arr[], T value){
    printf("1");
};

template<typename T, typename TT>
void test(T* &arr[], TT* value){
    printf("2");
    test<T*>(arr, value);
};

class A{};

void OnStart(){
   void* arr[] = {};
   A* ptr;
   test(arr, ptr);         // result: 2,2,2,2,2,2,2,2,...    should be: 2, 1
}
 
bool s_sel = SymbolSelect("", true);
s_sel = true;

Corrige esto, por favor.

 

La información sobre la herramienta sólo da un valor ENUM.