template<typename T> void F(T)
{
class A
{
void f() { new A; } // 'A' - declaration without typevoid g() { A* a; } // 'A' - pointer to this function type is not supported yet
};
};
voidOnStart()
{
F(0);
}
class A
{
};
class B : protected A
{
};
voidOnStart()
{
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++.
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.
Para login e uso do site MQL5.com, você deve ativar o uso de cookies.
Ative esta opção no seu navegador, caso contrário você não poderá fazer login.
Você entrou na conta. A autenticação de dois fatores foi desativada. Configure-a novamente e escaneie um novo código QR ou continue com a autenticação de dois fatores desativada.
Erro de compilação:
Aqui estão mais alguns erros:
E também há algo de errado com a conversão de ponteiro.
O seguinte código não é compilado:
embora a conversão seja aqui explícita. Tudo funciona em C++.
E também há algo de confuso em trazer as placas de sinalização.
É verdade, o compilador está a lutar.
Vá ler sobre dynamic_cast, static_cast e reinterpret_cast e quando usá-los correctamente e quando não.
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.