Erros, bugs, perguntas - página 1615

 
Olá a todos. Existe alguma forma de voltar a registar uma conta quando a ligação ao servidor MT5 é interrompida?
 

Erro de compilação:

class A
{ 
};

template<typename T>  void func(T *const &a[])  { } 


void OnStart()
  {
    A *const a[] = { NULL };
    func(a);      //  'a' - cannot convert from const pointer to nonconst pointer
  }
 

Aqui estão mais alguns erros:

template<typename T> void F(T)
{
  class A
  {
    void f()  { new A; }  // 'A' - declaration without type
        
    void g()  { A* a; }   // 'A' - pointer to this function type is not supported yet
  };
};


void OnStart()
  {
    F(0);
  }
 

E também há algo de errado com a conversão de ponteiro.

O seguinte código não é compilado:

class A
{
};

class B : protected A
{
};

void OnStart()
  {
    A* a;
    B* b= (B*)a;  // conversion from 'B *' to 'A *' is not accessible because of inheritance access
  }

embora a conversão seja aqui explícita. Tudo funciona em C++.

 
Alexey Navoykov:

E também há algo de confuso em trazer as placas de sinalização.

É isso mesmo, o compilador jura.
 
Комбинатор:
É verdade, o compilador está a lutar.
O que está certo? Abrir C++ e verificar como deve ser.
 
Alexey Navoykov:
Ir e ler sobre dynamic_cast, static_cast e reinterpret_cast e quando usá-los correctamente e quando não.
 
Комбинатор:
Vá ler sobre dynamic_cast, static_cast e reinterpret_cast e quando usá-los correctamente e quando não.
Vamos evitar inundações desnecessárias e filosofia, OK? Estamos a falar de uma construção específica que deve ser compilada.
 
Alexey Navoykov:

C++ converte este código para reinterpretar_cast e MQL para dynamic_cast. E, tanto quanto sei, este é exactamente o caso quando o compilador pode encontrar erro de transmissão dinâmica durante a compilação.

reinterpretar_cast é ilegítimo neste caso, pelo que o facto deste código se compilar em C++ não é um argumento.

 
Комбинатор:

C++ converte este código para reinterpretar_cast e MQL para dynamic_cast. E, tanto quanto sei, este é exactamente o caso quando o compilador pode encontrar um erro de transmissão dinâmica durante a compilação.

Reinterpretar_cast é ilegítimo neste caso, pelo que o facto deste código se compilar em C++ não é um argumento.

Espere, porque é que mistura as coisas? O que é que o elenco dinâmico tem a ver com isso? As tarefas do compilador não incluem jogar Sherlock Holmes e procurar algo na lógica do programa. Apenas executa uma verificação formal do cumprimento da norma linguística, nada mais. E tudo é correcto do ponto de vista da norma.

Se tivesse examinado cuidadosamente a minha amostra, teria visto que o problema estava relacionado com a protecção. Se o tivesse mudado para público, tudo está bem. O objecto em si não é alterado devido a isto, ou seja, o compilador MQL apenas tem uma restrição desnecessária, nada mais.

Portanto, não especule e procure um significado secreto onde não existe nenhum, o que é apenas um erro de compilação trivial.