Erros, bugs, perguntas - página 2416

 
Andrey Pogoreltsev:

Não há aqui qualquer necessidade de ambiguidade. Deve ser simplesmente a ordem em que os métodos sobrecarregados são aplicados. Isto é, a tarefa da solução de sobrecarga não é criar um dilema, mas escolher o melhor método adequado. Se ignorarmos o modificador de acesso, o primeiro método da tabela é retirado ou depende da implementação do compilador, mas não há ambiguidade.

Eis o que aconteceria se houvesse 2 métodos com parâmetros de entrada diferentes, por exemplo:

Voltando a C++, o mesmo vector tem um:

Portanto, esta é uma situação absolutamente normal.

Deu um exemplo muito simples de escolas primárias. Parece não ter nada a ver com o exemplo original.


Alexey Navoykov:

Neste exemplo é um método de um objecto não-constante, pelo que deve ser chamado, sendo todas as outras coisas iguais.

Não estava ciente desta regra, obrigado.

Se retirarmos a peça fundida e fizermos o argumento do tipo int para ambos os métodos, o código será compilado normalmente. Assim, é a peça fundida que provoca o desligamento do MQL. Esta peça fundida não deve afectar o código, uma vez que é idêntico.

Parece que a causa do problema é que o compilador não verifica se a fundição para os métodos sobrecarregados é idêntica.

 

Em geral, para resolver este problema (e muitos outros em MQL) é necessário mover um dos métodos para uma classe auxiliar:

class A { };

class _B
{
 protected: 
  A _a[];
 public:        
  const A * operator[](uint i) const { return &_a[i]; }  
};

class B : public _B
{
 public: 
  A * operator[](uint i)       { return &_a[i]; }
};
 
fxsaber:

Deu um exemplo muito simples de uma escola primária. Não parece ter nada a ver com o exemplo original.

Deve ler o padrão C++ para ver que tudo se resolve com a mesma regra que citei acima.
 
Slava:

Para começar, na cache de optimização, tanto MT5 como MT4 truncaram sempre os parâmetros das cordas para 63 caracteres.

Ao transmitir eventos, a corda também não pode ter mais de 63 caracteres

Assim, o que vem de fora é limitado

No que diz respeito aos produtos do utilizador final. O vendedor tem de considerar as limitações. E se ele não os conhece, não testou o seu produto o suficiente antes de o vender

Não se trata de como foi e é, mas de como deve ser, se se quiser acompanhar os tempos e mudar para melhor.

 

Deparei-me com este problema, ao testar uma EA, depois de definir os parâmetros e premir o botão start, as definições da EA são repostas por defeito, qual poderá ser o problema?

No vídeo, um exemplo

 
Dmitry Melnichenko:

Deparei-me com este problema, ao testar uma EA, depois de definir os parâmetros e premir o botão start, as definições da EA são repostas por defeito, qual poderá ser o problema?

exemplo em vídeo

MT5 reinicia-se a si próprio para o padrão no testador depois de ir para o separador "Definições

Ver post #1.

 

Fiz uma pergunta num fio vizinho, mas não parece haver muita gente a olhar para lá. Vou duplicá-lo aqui:

https://www.mql5.com/ru/forum/6343/page1020#comment_11112212

Brevemente: em futuros (no testador) as negociações são abertas e fechadas (por SL/TP), mas sempre com lucro zero. Pode ser um insecto no testador? Ou é necessário algum tipo de truque?

Вопросы от начинающих MQL5 MT5 MetaTrader 5
Вопросы от начинающих MQL5 MT5 MetaTrader 5
  • 2019.03.26
  • www.mql5.com
Подскажите пожалуйста, такой показатель тестера в жизни реален? И хороший это или плохой результат за год с депо 3000...
 

Bug de compilador. Ao compilar (verificação de sintaxe) um ficheiro .mqh com este código, não é mostrado qualquer erro. Só é mostrado ao compilar o executável, o que é inconveniente.

class A
{
 public: 
  A(int) {  }
};

class B : public A { };  // Здесь должна быть ошибка  'A' - wrong parameters count

B b;
 
Alexey Navoykov:

Bug de compilador. Ao compilar (verificação de sintaxe) um ficheiro .mqh com tal código, o erro não é gerado. É gerado apenas ao compilar o ficheiro executável, o que é inconveniente.

Porque um pastor não compila em princípio :))))

Se forçar o compilador inteiro a compilar um heder, obterá muitos falsos positivos.

PS. O compilador C++ também não se queixa sem utilizar tais classes.
 
Andrey Pogoreltsev:

Porque um pastor não compila em princípio :))))

Se forçar um compilador inteiro a compilar um heder, obterá muitos falsos positivos.

PS. O compilador C++ também não se queixará sem utilizar tais classes.

Estou ciente de que não compila. Estou a falar de verificação de sintaxe (que em ME também se chama "Compilar"), porque até a especifiquei entre parênteses num post anterior. Se também se executar a verificação de sintaxe no compilador C++ (através da linha de comando normalmente), ele repreenderá como um querido.