Erros, bugs, perguntas - página 2808

 
Erro na execução
class A {};
class B : public A {
public:
template<typename T>
                void f( T )  { printf( "%d", 1 ); }
};
class C : public B {
public:
                void f( A* ) { printf( "%d", 2 ); }
};
void OnStart()
{
        C *c;
        B *b;
        c.f( b );
}

O resultado em MQL: 1

Em C++: 2

Tanto quanto me lembro, o conceito original do MQL foi alterado há muito tempo e agora, como em C++, a classe base só é chamada se não houver nenhuma função adequada numa derivada. Ou talvez eles tenham mudado tudo outra vez?

 
A100:

Na MQL está bem:

mas C++ dá um erro em ambos os casos

O que poderia ser um erro no segundo caso? Há no máximo um aviso (dica) de que um ponteiro foi declarado mas não utilizado.

 
Por favor, resolva o bug observado em todas as novas versões

2020.07.26 10:54:28.285 PKFDC0:30019 passe genético (94, 1154) testado com erro "OnInit devolvido código não-zero 1" em 0:00:00.110

2020.07.26 10:54:28.289 Tester ficheiro de peritos \MQL5\StochasticCCI.ex5 erro aberto [2]

não está lá e não deveria estar.

o erro é um agente de rede após a actualização, antes da actualização funciona bem, o optimizador não dá erros no Expert Advisor em versões antigas, o Expert Advisor não recompilou

a demolição total e reinstalação do Metatrader com eliminação de todos os dados não teve qualquer efeito



 
Boris Egorov:
Por favor, resolva o bug observado em todas as novas versões

2020.07.26 10:54:28.285 PKFDC0:30019 passe genético (94, 1154) testado com erro "OnInit devolvido código não-zero 1" em 0:00:00.110

2020.07.26 10:54:28.289 Tester ficheiro de peritos \MQL5\StochasticCCI.ex5 erro aberto [2]

não está lá e não deveria estar.

o erro é um agente de rede após a actualização, antes da actualização funcionava bem, nas versões antigas o optimizador não dá um erro no Expert Advisor, o Expert Advisor não foi recompilado

a demolição total e reinstalação do Metatrader com eliminação de todos os dados não teve qualquer efeito



Mostre o código da sua chamada de indicador, por favor.
 
Mihail Matkovskij:

Qual poderia ser o erro no segundo caso? Há no máximo um aviso (dica) de que o ponteiro foi declarado mas não é utilizado.

Isso é porque não é

class B : public A {};
Pode haver dialectos diferentes, pelo que vale a pena verificar com os Desenvolvedores em qualquer caso
 
MetaQuotes:
Mostre o código da sua chamada de indicador, por favor.

Note o correio, os conselheiros do povo deixaram de trabalhar !!!!!!! https://www.mql5.com/ru/forum/347385/page5#comment_17519416

Новая версия платформы MetaTrader 5 build 2560: Улучшения во встроенной системе обучения
Новая версия платформы MetaTrader 5 build 2560: Улучшения во встроенной системе обучения
  • 2020.07.26
  • www.mql5.com
В пятницу 24 июля 2020 года будет выпущена обновленная версия платформы MetaTrader 5...
 

Fórum sobre comércio, sistemas automatizados de comércio e testes de estratégia comercial

Insectos, insectos, perguntas

A100, 2020.07.26 01:02

Tenho apenas um erro no MQL:

class A {};
class B : A {};
class C : B {
                void f1( A* ) {}    //(1)нормально
                void f2() { A *a; } //(2)нормально
};

mas C++ tem um erro em ambos os casos


Por favor explique porque é que existe um problema com este código?

 
fxsaber:

Por favor explique porque é que existe um problema neste código?

Não faço a menor ideia! Tomei este exemplo à parte... Estrutura alterada para classe -o invólucro C++ gera erro:

erro: 'classe A A::A' é inacessível

Pode verificá-lo você mesmo.

 

resolução de contexto. o construtor é inacessível através do antepassado por causa da herança privada.

Se especificar explicitamente o contexto, tudo se compila

                void f1( ::A* ) {}    //(1)нормально
                void f2() { ::A *a; } //(2)нормально

_____

não pergunte por que razão é necessário um construtor - não faço ideia.

 
@A100, @TheXpert, Obrigado.