Erros, bugs, perguntas - página 3106

 

Contradição:

struct X {
    X() : i( 1 ) {}
    const int i;
};
void OnStart()
{
    X x1[1] = {};    //(1) нормально ???
    X x2[1];
    ZeroMemory( x2 );//(2) Error: 'x2' - not allowed for objects with protected members or inheritance
}

Qual é a diferença fundamental entre (1) e (2) ?

 
A100 #:

Contradição:

Qual é a diferença fundamental entre (1) e (2) ?

1 é inicialização na declaração, 2 é (em geral) alteração.

 
JRandomTrader #:

1 é inicialização na declaração, 2 é (no caso geral) modificação.

Se x1[0].i pode ser zero, porque é que x2[0].i não pode? Como é que é pior?

Aqui está um exemplo simplificado de contradição:

void OnStart()
{
    X x1[1] = {};    //(1) нормально ???
    X x3 = { 0 };    //(3) Error: 'x3' - cannot be initialized with initializer list
}
 
A100 #:

Aqui está um exemplo simplificado de uma contradição:

E aqui está outro:

void OnStart()
{
    X x1[1] = {};    //(1) нормально ???
    X x2[1];
    Print( x1[0].i == x2[0].i );
}

Resultado: falso

Considerando que:

 
Erro: o software calculou de forma incompreensível uma transacção feita em Roubles 365₽->338₽ (40 acções) e em vez de -1020₽ mostrou uma perda de $148.
Se alguém souber, por favor informe o que pode ser feito.
Arquivos anexados:
 

Ajuda dos peritos :

struct Y
  {
   int               i;
                     Y(const Y & p): i(p.i) {}
  };

void OnStart()
{
  Y y(y);               // UB?
}

É UB ou o quê?

 
Erro interno do compilador
union X {
    struct XX {char i;} s;
    int i;
} x[1] = {};
void OnStart() {}
5º com {}
 
mktr8591 #:

É UB ou o quê?

Este é um defeito do compilador - em teoria deve haver um erro no momento da compilação, porque na MQL

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

Erros, Erros, Perguntas

A100, 2020.09.30 16:54

Isso contradiz o seu próprio conceito de que uma variável é considerada declarada quando a declaração é finalizada. Porque o inventou em primeiro lugar? Se for assim num caso e diferente noutro

Se reescrever OnStart desta forma:

void OnStart()
{
  Y y = y; //Error: 'y' - undeclared identifier
}
então o compilador reage de acordo com a teoria de
 
A100 #:

Esta é uma falha do compilador - em teoria, deve haver um erro na fase de compilação, porque na MQL

se reescrever o OnStart desta forma:

então o compilador reage de acordo com a teoria

Exactamente.

Obrigado!

 

Alguém descobriu como utilizar a biblioteca padrão para aumentar a prioridade do painel?

Tomei o código a partir do exemplo daqui.

Na animação pode ver que se criar um painel e depois uma linha de tendência e o colocar debaixo do botão, os cliques no botão apanham os eventos de clique para a linha. O botão é ignorado.

Tentei definir a prioridade para o botão desta forma: m_button3.ZOrder(100) - mas isso não ajuda.

Existe também um método CWnd::BringToTop(), que defini para todo o painel e separadamente para o botão. Mas não é muito claro como deve funcionar, como chamá-lo correctamente e estabelecer esta prioridade. O desespero ao chamar este método mostra que o m_id é sempre igual a -1, embora seja o ID do objecto, a julgar pelo comentário, mas o m_nome parece mostrar que o objecto está envolvido.


Se alguém tiver uma solução, por favor informe onde escavar.