Erros, bugs, perguntas - página 2661
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Peço desculpa por simplificar o código ao mínimo, introduzindo certas imprecisões ao fazê-lo, em particular:
- Os objectos passados para a função têm o mesmo tamanho (código actualizado);
- em vez de impressão de saída muda ("1");/printf("2"); a interface ou os internos do objecto são de facto acedidos directamente, o que por sua vez não permite a linha de dois algoritmos numa única função de chamada (código actualizado).
Peço desculpa por simplificar o código ao mínimo, introduzindo certas imprecisões ao fazê-lo, em particular:
- Os objectos passados para a função têm o mesmo tamanho (código actualizado);
- em vez de impressão de saída muda ("1");/printf("2"); a interface ou os internos do objecto são de facto acedidos directamente, o que por sua vez não permite a linha de dois algoritmos numa única função de chamada (código actualizado).
Ou assim:
não é ideal pois requer alterações na estrutura dos objectos usados e difere a lógica, mas funciona.
E sim, é melhor fazer um invólucro funcionar durante o teste:
Do que pesquisar através do projecto para todas as chamadas:
De qualquer modo, muito obrigado pela vossa ajuda.
Obrigado pela solução,
Não é ideal porque requer alterações na estrutura dos objectos usados e difere a lógica, mas funciona.
E sim, melhor fazer um invólucro funcionar durante o teste:
do que pesquisar através do projecto para todas as chamadas:
De qualquer modo, muito obrigado pela vossa ajuda.
Sim, concordo.
Defeitos na função do modelo/na operação de cache da classe:
(não fixado pelo MT5(build 2345)) ** Comportamento indefinido, cria-se várias vezes um objecto complexo embrulhado com tipo interno "C" e acaba por ser um tipo de dados completamente diferente, talvez "B", talvez "int", o que se quiser...
(não fixado pelo MT5(build 2345)) * Compile Error, bug ao passar um ponteiro de função como um argumento de modelo de ref. constante.
(não fixado pelo MT5(build 2345)) * Compile Error, B<int> object pode ser criado depois de B<void*> class object, mas o erro de compilação ocorre se for feito antes.
Defeitos na função/classe de trabalho do modelo:
(não fixado pelo MT5(build 2345)) ** Erro de compilação, bug dentro da função de modelo, ponteiro passado dentro da operação deconversão de tipo explícito comporta-se como uma classe, caso contrário como um ponteiro.
(não fixado pelo MT5(build 2345)) ** Compile Error, bug com geração de código de classe de modelo enquanto se utiliza a classe interna.
(não fixado pelo MT5(build 2345)) ** Erro de compilação, erro na tentativa de acesso à classe interna para parâmetro de função de modelo de modelo.
(não fixado pelo MT5(build 2345)) ** Compile Error, bug na geração do método/classe do modelo, o processo de "auto-completamento" do parâmetro do modelo sai do scop para o código principal do programa.
(não fixado pelo MT5(build 2345)) * Erro de compilação, erro com ausência de código de classe de modelo autogerado quando a classe de modelo actua como valor de retorno para o método de modelo.
(não fixado pelo MT5(build 2345)) * Compile Error, bug na definição de classe interna - nenhuma referência ao espaço de nomes global ao definir uma classe base.
(não fixado pelo MT5(build 2345)) *(novo) Compile Error, bug na passagem da estrutura interna para a função template, otipo de dados resultante não pode ser utilizado como tipo de dados de base para outra estrutura interna na classe template.
(não fixado pelo MT5(build 2345)) *(novo) Compile Error, um erro ao chamar uma função modelo com tipos de argumentos explícitos quando chamado a partir de uma função sobrecarregada não-modelo.
Defeitos em função sobrecarregada chamam a desadequação de prioridade em MQL em comparação com C++:
(não fixado pelo MT5(build 2345)) *** Erro de compilação quando há herança de classe A <= B <= C <= D e duas funções de sobrecarga são implementadas, por exemplo, uma com o parâmetro A* e outra com o parâmetro B*, passando depois em tal função um objecto C* ou D* em MQL causa um erro de compilação "chamada ambígua para função sobrecarregada".
(não fixado pelo MT5(build 2345)) ** Tempo de execução, desajuste prioritário para chamadas de funções de modelo sobrecarregadas.
(não corrigido por MT5(build 2345)) **(novo) Compile Error, a prioridade das chamadas de funções de modelo sobrecarregadas depende efectivamente do tipo de parâmetro do modelo, que teoricamente não deve afectar o resultado da compilação.
(não fixado pelo MT5(build 2345)) **(novo) Compile Error, ocorre um erro de compilação ao gerar código para uma função de modelo, apesar de haver uma função de modelo sobrecarregada com uma assinatura adequada para os parâmetros passados.
Sugestões:
ref- em permitir que os literais e as variáveis temporárias sejam passados como constantes ref argumentos para uma função.
link- aomover ficheiros de projectos no separador Projecto, para ficheiros móveis que estão abertos e nos separadores ME, actualize automaticamente o seu caminho de localização.
link- para introduzir a funcionalidade de declaração de typedef em MQL.
link- sobre a possibilidade de forçar a geração de construtores de cópias por defeito e operadores de atribuição.
Sergey Dzyublik:
Спасибо за вариант решения
a ligação é uma cópia temporária, pelo que não se pode alterar a estrutura
A referência é uma cópia temporária, pelo que não se pode alterar a estrutura
Tem razão no caso geral...
Mas em casos particulares é muito mais complicado e na realidade as estruturas dadas são iteradores e não são os seus conteúdos que são alterados, mas sim os objectos a que se referem.
Assim, o problema é resolvido no caso especial e estou-lhe grato por isso.
Fórum sobre comércio, sistemas automatizados de comércio e testes de estratégia comercial
Insectos, insectos, perguntas
Sergey Dzyublik, 2020.03.01 12:53
Se bem entendi, então esta função devolverá o ponteiro ao objecto que não existe?
Compreendo correctamente que esta função irá devolver um ponteiro a um objecto inexistente?
Sim, neste exemplo a função irá devolver um ponteiro a um objecto inexistente.
O principal objectivo deste código é mostrar que existe funcionalidade funcional para uma classe simples e, ao mesmo tempo, não existe nenhuma para uma classe modelo.