Errori, bug, domande - pagina 2697

 
Stanislav Korotky:

Dichiarare una classe dentro una funzione?

Senza modelli, funziona.

 
Bug MT5(build 2375) errore di compilazione quando si chiama una funzione tramite il suo puntatore, quando si usa un array di puntatori a una funzione:

#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:
Errore di compilazione del bug MT5(build 2375) quando si chiama una funzione tramite il suo puntatore, quando si usa un array di puntatori a una funzione:

Un bug molto antico.

 

Qualche consiglio - in MetaEditor aprire finestre di file, dove si salva la loro lista per aprirli in seguito?

Di tanto in tanto ME si apre da zero, anche se prima c'erano un sacco di file aperti. Potrebbe essere dovuto agli aggiornamenti.

Voglio fare il backup manuale della lista, o forse qualche altra soluzione?

 
Aleksey Mavrin:

Qualche consiglio - in MetaEditor aprire finestre di file, dove si salva la loro lista per aprirli in seguito?

Di tanto in tanto ME si apre da zero, anche se prima è stato aperto un mucchio di file. Potrebbe essere dovuto agli aggiornamenti.

Voglio fare il backup manuale della lista, o forse qualche altra soluzione?

C'è una lista nel registro, c'è una lista nel file ini "metaeditor.ini" tramite ME ==> File - Open Data Folder (Ctrl + Shift + D) ==> Config ==> metaeditor.ini
È più probabile che tu abbia bisogno del secondo.

 
fxsaber:

Un bug molto antico.

Ricordo con certezza che una volta funzionava come doveva.
Sono andato a controllare e ho aggiunto alcune altre varianti di chiamata di puntatori a una funzione dal loro array.

Si scopre che tutto funziona quando l'array di puntatori a una funzione è all'interno di una classe e l'elemento specifico dell'array è accessibile tramite operator[].
Allo stesso tempo, se si usa una funzione ordinaria per accedere a un elemento, si verifica di nuovo un errore di compilazione... È un miracolo...

 
C'è un modo per sovrascrivere il ridimensionamento automatico dell'indicatore? Diciamo che ci sono due grafici nella sottofinestra dell'indicatore, è possibile fare il rescaling sull'asse verticale su un grafico e non sul secondo? In modo che il secondo grafico non influisca sul ridimensionamento.
 
Bug MT5(build 2375), nonostante la specializzazione esplicita quando viene chiamata la funzione template sovraccaricata, viene ancora chiamata la funzione template predefinita, il che porta all'overflow dello stack.
C++ online(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;

Correggete questo, per favore.

 

Il tooltip dà solo un valore ENUM.