Erros, bugs, perguntas - página 1417

 

A100:

virtual int Compare(const CObject *node,const int mode=0) const;


Tem razão. Curto e claro, sem quaisquer palavras desnecessárias. Afixei um código de trabalho.

Arquivos anexados:
sort.mq5  3 kb
 
Stanislav Korotky:

Como resultado, dentro deste método o nome tipográfico define correctamente o tipo passado, por exemplo, como int, mas já dentro do nome tipográfico do construtor B é igual a string.

O resultado do nome datilografar é sempre do tipo string, por outras palavras, o nome datilografar pode ser representado convencionalmente como uma função
string typename( X );
 
A100:
o resultado do nome datilografia é sempre do tipo string, por outras palavras
Não é isso que quero dizer. nome datilografado devolve um fio contendo o nome do tipo. Dentro de um método de classe modelo, a corda com o tipo é "int", e dentro do construtor chamado a partir daí, a corda contém "string".
 
Stanislav Korotky:
Não é isso que quero dizer. nome datilografado devolve uma corda com o nome do tipo. Dentro do método da classe modelo, a corda com o tipo é "int", e dentro do construtor chamado a partir daí, a corda contém "string".
class A { public:
template<typename T>
        A( T ) { Print( typename( T )); }
};
class B { public:
template<typename T>
        void f( T t ) { A a( t ); } //вызываем A::A(...)
};
void OnStart()
{
        B b;
        int i = 0;
        b.f( i );
}
Resultado: int
 

O compilador não reporta um erro se #endif estiver em falta

#property library
#ifndef  MACRO
#define  MACRO

De preferência, deve, caso contrário, ser difícil encontrar erros
 
A100:
Resultado: int.
Sim, este exemplo mínimo funciona como deveria, mas o código fonte mais complexo não funciona. Escreveu-o em SD.
 
CoderMQ4:

Rapazes, isto é um bug do mercado ou é completamente normal?


Ainda não tentei, mas não deve funcionar se estiver ligado ao hardware e não ao sistema operativo. É como tirar o disco rígido e colocá-lo numa placa mãe diferente com um vídeo diferente. Irá começar imediatamente a procurar novos condutores.

Ou será que estou a interpretar mal a máquina virtual?

 

Uma chamada para uma função virtual numa instância de uma classe derivada resulta numa chamada para essa função a partir da classe base, não da classe derivada.

 
Ilya Malev:

Uma chamada para uma função virtual numa instância de uma classe derivada resulta numa chamada para essa função a partir da classe base, não da classe derivada.

Este é sempre o caso do construtor. Porquê? -> google C++ (adicionar a palavra construtor à cadeia de consulta)
 
A100:
Fazem sempre em construtor. Porquê? -> google C++ (adicionar a palavra construtor à cadeia de consulta)

Obrigado, não sabia) Seria bom adicioná-lo à MQL5 Reference, sabe, onde são mencionadas funções virtuais e construtores. Não é assim em todas as línguas.