Erros, bugs, perguntas - página 1981

 
A100:

Isto não muda realmente nada - erro de compilação (tenho um comprimido - compilador Borland)

Hmm, por isso é necessário ir aos padrões linguísticos e ver quem é o compilador que está a fazer asneira.
 
Alexey Navoykov:
Hmm, por isso temos de olhar para as normas linguísticas e ver de quem é o compilador que está a fazer asneira.
A segunda opção é semelhante

#ifdef __BORLANDC__
class B;
class A {
        int g( B * );
        int i;
};
class B : public A {};
int A::g( B *b ) { return b->i; } //Error: E224
#endif

VS 2010 falha porque supera o privado através da conversão implícita de B* para A*


#ifdef __BORLANDC__

class B;
class A {
        int g( B * );
        int i;
};
class B : public A {};
int A::g( B *b ) { return ((A *)b)->i; } //нормально

#endif

 
Alexey Navoykov:
Hmm, por isso temos de ir aos padrões linguísticos e ver de quem é o compilador que está a fazer asneira.
gcc 7.2 compila a versão mais recente, verificada aqui
Compiler Explorer - C++
  • About the author
  • godbolt.org
These settings control how Compiler Explorer acts for you. They are not preserved as part of shared URLs, and are persisted locally using browser local storage.
 
Комбинатор:
gcc 7.2 compila a versão mais recente, verificada aqui

O resultado é o seguinte quadro

class B;
class A {                                       //MQL //BCC //VS2010 //gcc
        int f1( B *b ) { return       b .i;   } // -     -     +        +
        int f2( B *b ) { return       b .g(); } // +     -     +        +
        int f3( B *b ) { return ((A *)b).i;   } // +     +     +        +
        int f4( B *b ) { return ((A *)b).g(); } // +     +     +        +
        int f5()       { return       b .i;   } // -     -     +        +
        int f6()       { return       b .g(); } // +     -     +        +
        int f7()       { return ((A *)b).i;   } // +     +     +        +
        int f8()       { return ((A *)b).g(); } // +     +     +        +
//---
        int g() { return 0; }
        int i;
        B *b;
};
class B : public A {};

E a msdn diz: O controlo de acesso ajuda a evitar que os objectos sejam utilizados para fins não autorizados. Esta protecção perde-se quando são efectuadas conversões de tipo explícito(conversões de tipo).
 

Olá a todos.

Pode dizer-me se existe alguma forma de remover a janela indicadora que aparece no testador de estratégia quando a visualização está activada?

É gerado por wizarda em MT5.

Li na documentação MQL5 que o IndicatoRelease não funciona no Strategy Tester. (Tentei inserir esta função no OnDeinit de qualquer forma, começou a queixar-se de que um cabo não é declarado. Eu declaro-o, gera outros erros).

Existe outra forma?

 
Ahmet Garyagdyyev:

Olá a todos.

Pode dizer-me se existe alguma forma de remover a janela indicadora que aparece no testador de estratégia quando a visualização está activada?

É gerado por wizarda em MT5.

Li na documentação MQL5 que o IndicatoRelease não funciona no Strategy Tester. (Tentei inserir esta função no OnDeinit de qualquer forma, começou a queixar-se de que um cabo não é declarado. Eu declaro-o, gera outros erros).

Existe outra forma?


Pode alterar o modelo com todos os indicadores, para qualquer um dos previamente guardados por si.

 
A100:

O resultado é o seguinte quadro

O VS e o gcc há muito que são considerados como a referência* (ou pelo menos menos menos menos propensos a insectos) do que a Borland. Eu próprio utilizo a Borland há muitos anos, mas com base nas suas outras vantagens.

PS. *esta não é a minha opinião pessoal; não vou discuti-la.

 

Colegas, alguém encontrou tentativas de implementar uma biblioteca STL c++ (tendo em conta as capacidades linguísticas)? De preferência com a colocação do codobase, a pesquisa diz não, mas vrdug ... . Certamente não tudo, mas algumas coisas básicas: alguns recipientes normais através de modelos, e que o auto_ptr (eu certamente escrevi o meu próprio, mas escrever tais primitivos é uma tolice).
Não compreendo porque é que o std µl não é um modelo e porque tivemos de inventar novos nomes para métodos/classes análogos em STL.

 

Encontrei um erro, não vou inserir texto compilado completamente, vou retirar peças do guião:

class Source : public CObject
{
public:
   upindex_t start, top, lstart, ltop;
};

CArrayObj sourcear;

do
{
   Source *new_src = new Source;
   new_src.start = last.start;
   new_src.top = last.top;
   new_src.lstart = prev_prev.start;
   new_src.ltop = prev_prev.top;
   if( ! sourcear.Add(new_src) )
      return;
}
while(...);

for(int i = 0;  i < sourcear.Total();  ++ i)
{
   Source cursrc = (Source*)sourcear.At(i);  //!!!!! Это не вызывает ошибки во время компиляции
}

Ou seja: CObject*--> Fonte* --> Fonte

Ou é algum tipo de MQL específico para MQL complicado?


ZS: e tal cordel é comido:

Source new_src = new Source;

Isso é um disparate. Não copiei cons/operadores na língua, não o desreferenciei. O que é que se passa aqui?

 
pavlick_:

Ou é algum tipo de MQL específico para MQL complicado?

class A {};

void OnStart()
{
  A a = new A;
}

O operador de cópia predefinido é accionado.