Ошибки, баги, вопросы - страница 2697

 
Stanislav Korotky:

Объявление класса внутри функции?

Без шаблонов работает.

 
Баг МТ5(build 2375) ошибка компиляции при вызове функции через ее указатель, когда используется массив указателей на функцию:

#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:
Баг МТ5(build 2375) ошибка компиляции при вызове функции через ее указатель, когда используется массив указателей на функцию:

Очень древний баг.

 

Кто подскажет - в МетаЕдиторе открытые окна файлов, где их список  сохраняется для открытия их в дальнейшем?

Периодически МЕ открывается с чистого листа, хотя до этого было открыто куча файлов. Возможно связано с обновлениями.

Хочу вручную бэкапить список, ну или может как-то по другому решается?

 
Aleksey Mavrin:

Кто подскажет - в МетаЕдиторе открытые окна файлов, где их список  сохраняется для открытия их в дальнейшем?

Периодически МЕ открывается с чистого листа, хотя до этого было открыто куча файлов. Возможно связано с обновлениями.

Хочу вручную бэкапить список, ну или может как-то по другому решается?

Есть список в реестре, есть список в ini файле "metaeditor.ini" по пути МЕ ==> File - Open Data Folder (Ctrl + Shift + D) ==> Config ==> metaeditor.ini
Вам скорее второй надо.

 
fxsaber:

Очень древний баг.

Помню точно, что когда-то все работало как надо.
Пошел проверять и добавил еще несколько вариантов вызовов указателей на функцию из их массива.

Оказывается, все работает, когда массив указателей на функцию находится внутри класса, а доступ к конкретному элементу массива осуществляется с помощью operator[].
При этом если для доступа к элементу использовать обычную функцию - опять происходит ошибка компиляции... Чудеса...

 
Никто не подскажет, как-нибудь можно отменить автоматическое перемасштабирование для индикатора. Т.е. допустим есть два графика в подокне индикатора, можно ли сделать так, чтобы по одному графику происходило перемасштабирование по вертикальной оси, а по второму графику не происходило? Чтобы второй график не влиял на перемасштабирование.
 
Баг МТ5(build 2375), не смотря на явную специализацию при вызове перегруженной шаблонной функции все равно происходит вызов шаблонной функции по умолчанию, что приводит к переполнению стека.
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;

Поправьте, пожалуйста

 

Подсказка выдает только одно ENUM-значение.


Причина обращения: