Erros, bugs, perguntas - página 1034
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
De facto, faz sentido, porque o que está escrito parece um pouco ilusório.
C++ não considera assim.
Sim, C++ não conta muitas coisas, mas a questão é que a inicialização dos membros estáticos não está provavelmente na ordem em que são inicializados, mas na ordem em que são declarados.
Vou ter de ler a norma sobre este assunto.
https://www.mql5.com/ru/docs/basis/variables/initialization
Tornei tudo demasiado fácil - não me movi de forma constante - como podem ver agora tudo está claro - uma constante é inicializada por outra:
O compilador indica como um erro que o membro s1 está protegido. Se substituirmos protegido por público, tudo funciona como um relógio. Mas estar protegido não tem nada a ver com a ordem de inicialização ou ordem de atribuição, nem com a possibilidade de inicialização com um valor particular
Vou ter de ler o padrão sobre isto.
Concordo, em geral, o compilador não é o mesmo que o compilador e é preciso ordená-lo.
Aqui está outro exemplo
O compilador MQL aqui não quer inicializar o array com o valor const int (enumera - passa)
Mais uma vez, apelo ao facto de C++ o copiar e inicializar correctamente.
Provavelmente um erro na sequência de chamada
Em C++, a ordem de avaliação dos operandos de uma expressão é UB. Porque é que está a confiar numa encomenda específica aqui?
foi produzido como "palavra Olá" ?
Isto é o que acontece neste caso para um operador sobrecarregado para o tipo int, enquanto que para o tipo string tudo é produzido normalmente.
Além disso, não tem nada a ver com C++. Suponha que escreveu no seu código
E tem estas funções executadas em ordem inversa ou de todo para diferentes tipos de argumentos - em qualquer ordemSaudações!
Ajude-me a corrigir o 'acesso ao ponteiro inválido'.
No OnInit() temos:
SymbolsCollection = new CSymbolsCollection(); SymbolsCollection.RefreshRealSymbols();
CSymbolsCollection::RefreshRealSymbols() tem um métodoCleanSymbolsArray(myRealSymbols) call;
Este método e variável são declarados na classe como:
O problema é que oRefreshRealSymbols() executa normalmente se chamado no construtorCSymbolsCollection.
No entanto, chamar SymbolsCollection.RefreshRealSymbols(); em OnInit(); resulta em:
O erro aponta para o método CleanSymbolsArray(myRealSymbols); linha no corpo do CSymbolsCollection::RefreshRealSymbols(), a posição é logo após o parêntese de abertura.
Alguma ideia?
...
Alguma ideia?