Fehler, Irrtümer, Fragen - Seite 2697

 
Stanislav Korotky:

Deklaration einer Klasse innerhalb einer Funktion?

Ohne Vorlagen funktioniert es.

 
Fehler MT5(build 2375) Kompilierungsfehler beim Aufruf einer Funktion über ihren Zeiger, wenn ein Array von Zeigern auf eine Funktion verwendet wird:

#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) Fehler bei der Kompilierung, wenn eine Funktion über ihren Zeiger aufgerufen wird, wenn ein Array von Zeigern auf eine Funktion verwendet wird:

Ein sehr alter Fehler.

 

Irgendwelche Ratschläge - wo wird die Liste der in MetaEditor geöffneten Dateifenster gespeichert, um sie später zu öffnen?

Von Zeit zu Zeit öffnet ME das Programm von Grund auf, obwohl vorher schon eine Reihe von Dateien geöffnet wurde. Könnte an Aktualisierungen liegen.

Ich möchte die Liste manuell sichern, oder gibt es vielleicht eine andere Lösung?

 
Aleksey Mavrin:

Irgendwelche Ratschläge - wo wird die Liste der in MetaEditor geöffneten Dateifenster gespeichert, um sie später zu öffnen?

Von Zeit zu Zeit öffnet ME von Grund auf, obwohl vorher eine Reihe von Dateien geöffnet waren. Könnte an Aktualisierungen liegen.

Ich möchte die Liste manuell sichern, oder gibt es vielleicht eine andere Lösung?

Es gibt eine Liste in der Registry, es gibt eine Liste in der Ini-Datei "metaeditor.ini" über ME ==> File - Open Data Folder (Ctrl + Shift + D) ==> Config ==> metaeditor.ini
Es ist wahrscheinlicher, dass Sie die zweite brauchen.

 
fxsaber:

Ein sehr alter Fehler.

Ich erinnere mich genau, dass es einmal so funktioniert hat, wie es sollte.
Ich ging, um es zu überprüfen und fügte einige weitere Varianten des Aufrufs von Zeigern auf eine Funktion aus ihrem Array.

Es stellt sich heraus, dass alles funktioniert, wenn sich das Array mit den Zeigern auf eine Funktion innerhalb einer Klasse befindet und der Zugriff auf das spezifische Arrayelement über operator[] erfolgt.
Wenn Sie jedoch eine gewöhnliche Funktion verwenden, um auf ein Element zuzugreifen, tritt erneut ein Kompilierungsfehler auf... Es ist ein Wunder...

 
Gibt es eine Möglichkeit, die automatische Skalierung des Indikators außer Kraft zu setzen? Angenommen, es gibt zwei Diagramme im Unterfenster des Indikators. Ist es möglich, die Skalierung auf der vertikalen Achse in einem Diagramm vorzunehmen und im zweiten nicht? Das zweite Diagramm hat also keinen Einfluss auf die Skalierung.
 
Fehler MT5(build 2375), trotz expliziter Spezialisierung wird beim Aufruf einer überladenen Template-Funktion immer noch die Standard-Template-Funktion aufgerufen, was zu einem Stack Overflow führt.
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;

Bitte korrigieren Sie dies.

 

Der Tooltip gibt nur einen ENUM-Wert an.