Erros, bugs, perguntas - página 2697

 
Stanislav Korotky:

Declarar uma classe dentro de uma função?

Sem modelos, funciona.

 
Bug MT5(build 2375) erro de compilação quando se chama uma função através do seu ponteiro, quando se utiliza um conjunto de apontadores para uma função:

#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) erro de compilação de bugs ao chamar uma função através do seu ponteiro, quando é utilizado um conjunto de apontadores para uma função:

Um insecto muito antigo.

 

Qualquer conselho - no MetaEditor abrir janelas de ficheiros, onde é que a sua lista é guardada para abri-la mais tarde?

De vez em quando, ME abre do zero, embora antes disso um monte de ficheiros tenham sido abertos. Pode ser devido a actualizações.

Quero fazer uma cópia de segurança manual da lista, ou talvez alguma outra solução?

 
Aleksey Mavrin:

Qualquer conselho - no MetaEditor abrir janelas de ficheiros, onde é que a sua lista é guardada para abri-la mais tarde?

De vez em quando, ME abre do zero, embora antes disso um monte de ficheiros estivessem abertos. Pode ser devido a actualizações.

Quero fazer uma cópia de segurança manual da lista, ou talvez alguma outra solução?

Existe uma lista no registo, existe uma lista no ficheiro ini "metaeditor.ini" via ME ==> File - Open Data Folder (Ctrl + Shift + D) ==> Config ==> metaeditor.ini
É mais provável que precise do segundo.

 
fxsaber:

Um insecto muito antigo.

Lembro-me com certeza que uma vez funcionou como devia.
Fui verificá-lo e adicionei mais algumas variantes de apontadores de chamada a uma função da sua matriz.

Acontece que tudo funciona quando a matriz de apontadores para uma função está dentro de uma classe e o elemento específico da matriz é acedido através do operador[].
Ao mesmo tempo, se utilizar uma função normal para aceder a um elemento, ocorre novamente um erro de compilação... É um milagre...

 
Existe alguma forma de anular a redimensionação automática do indicador? Ou seja, digamos que existem dois gráficos na subjanela de indicadores, é possível fazer redimensionamento no eixo vertical num gráfico e não no segundo? Para que o segundo gráfico não afecte o redimensionamento.
 
Bug MT5(build 2375), apesar da especialização explícita quando a função de modelo sobrecarregada é chamada, a função de modelo padrão ainda é chamada, o que leva ao transbordamento da pilha.
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;

Corrija isto, por favor.

 

A ponta da ferramenta dá apenas um valor ENUM.