Erros, bugs, perguntas - página 1032

 
stringo:
A propósito, o que quis dizer ao tentar organizar o turno da esquerda por 35 (que é o número para o qual o '5' literal converte)?
Foi um exemplo simplificado, tanto quanto possível. O objectivo era sobrecarregar o operador. Isto deixa-o com a transformação explícita
 
A100:
Este foi um exemplo simplificado, tanto quanto possível. O objectivo era precisamente o de sobrecarregar o operador. Isto deixa-nos com uma transformação explícita.
Obrigado por simplificar o exemplo. Tais simplificações são muito convenientes para erros de análise
 
Outra incoerência
class A {
public:
        virtual int f() { return ( 1 ); }
};

class B : public A {
public:
        virtual int f() { return ( 2 ); }
};

int g( A& a )
{
        return ( a.f() );
}

void OnStart()
{
        B b;
        Print( g( b ) ); // результат: 1
}
Considerando que uma construção semelhante em C++ retorna resultado: 2, o que é lógico porque o objecto é B e não A
 
A100:
Outra incongruênciaChile uma construção semelhante em C++ devolve o resultado: 2, o que é lógico, porque o objecto é exactamente B, não A
Sim, parece um erro, obrigado por encontrá-lo - vamos definitivamente verificá-lo e corrigi-lo.
 
Os itens na votação, não são autotraduzidos.
 
MetaDriver:

Como é que isso lhe está a correr?

Não posso reproduzir a sua situação por uma razão simples: não tenho um :

Sim, foi no descarregamento do ficheiro que se verificou o erro, não os amortecedores. Parece ter seguido em frente agora.
 
Al_key:
Sim, houve um erro no descarregamento do ficheiro, não nos amortecedores. Agora, parece ter seguido em frente.

Mais uma pergunta:

Tem um exemplo de como executar um indicador personalizado em pequenos gráficos (os que têm objectos e podem ser atirados para cima do gráfico principal)? Utilizo em índices de moeda MT4 e seria muito fixe vê-los numa pequena janela móvel de MT5, em vez de desperdiçar metade do ecrã.

 
O sinal copia o negócio, mas o volume é sempre 0,01 e o do vendedor é diferente. O que devo fazer? Quero que o volume seja o mesmo que o do vendedor.
 
A100:
Isto é da Referência MQL5:

Qualquer caractere único entre aspas simples ou código de caracteres ASCII hexadecimal como '\x10' é uma constante de caracteres e é do tipo ushort.

Surge então a questão porque é que o compilador não consegue distinguir o ushort do int - sem especificar explicitamente?
Encontrada a razão, acontece que o compilador considera um único carácter entre aspas, por exemplo '5' não curto, mas curto, como o exemplo confirma:
class A {
public:
        int operator<<( ushort ch ) { return ( 1 ); }
        int operator<<( short  ch ) { return ( 2 ); }
        int operator<<( int   ch ) { return ( 3 ); }

        int f( ushort ch ) { return ( 4 ); }
        int f( short  ch ) { return ( 5 ); }
        int f( int   ch ) { return ( 6 ); }
};

int h( ushort ch ) { return ( 7 ); }
int h( short  ch ) { return ( 8 ); }
int h( int   ch ) { return ( 9 ); }

void OnStart()
{
        A a;
        Print( a << '5' );  // результат: 2
        Print( a.f( '5' )); // результат: 5
        Print( h( '5' ));   // результат: 8
}

Tudo compila, funciona e não requer a especificação de conversões explícitas.

Consequentemente, ou a descrição não corresponde ao compilador, ou o compilador não funciona de acordo com a descrição. Gostaria de um fósforo.

 

o que pode ser:

erro crítico de tempo de execução 1079902208 na função OnTick (erro desconhecido)

período deensaio de 2 horas

Vale a pena verificar as ferramentas disponíveis.