o ano passado não funcionou dessa forma - testei especificamente modificadores constantes
e parece que@Ilyas explicou como executar um programa MQL, primeiro todas as constantes e estáticas são inicializadas, não importa onde são definidas, e depois os construtores de classes são chamados
ok, com esta inicialização estática / const - ainda pode ser devidamente distribuída, mas o facto de o modificador const não garantir que o compilador a verifique - muito inesperado - o meu segundo exemplo
Em ambos os seus exemplos, tudo funciona correctamente e é esperado.
o ano passado não funcionou dessa forma - testei especificamente modificadores constantes
e parece que@Ilyas explicou como executar o programa MQL, primeiro todas as variáveis constantes e estáticas são inicializadas, não importa onde são descritas, e depois os construtores de classes são chamados.
Parece ser variáveis globais com modificadores const/static e está a usar variáveis locais.
o erro é que o compilador MQL permite expressões ambíguas, se houver um modificador constante, então é uma constante
o mesmo código não foirastreado pelo compilador? a outra situação foi rastreada.
Sharp em VS2019 captou-o antes da sua compilação.
class A{
public:
int ivalue;
int inc()const {staticint v = 0; return(++v);}
A():ivalue(0){}
};
class B{
public:
int ivalue;
int inc(){return(++ivalue);}
B():ivalue(0){}
};
//+------------------------------------------------------------------+voidOnStart()
{
const A a;Print(a.inc());
B b1;
Print(b1.inc());
const B b2;Print(b2.inc()); // 'inc' - call non-const method for constant object
}
//+------------------------------------------------------------------+
Sergey Dzyublik:
Deve ter significado variáveis globais com modificadores constantes/estáticos, enquanto utiliza variáveis locais.
Posso estar confuso, mas o comportamento do modificador de constância é muito diferente do C#
Também aqui está tudo bem.
não está correcto!
Verifiquei-o especificamente na VS2019:
Erro CS0133 A expressão atribuída a "a" deve ser constante. ConsoleApp2 ..repos\ConsoleApp2\ConsoleApp2\Program.cs 13 Activo
Erro CS0133 A expressão atribuída a "b" deve ser constante. ConsoleApp2 ..repos\ConsoleApp2\ConsoleApp2\Program.cs 13 Activo
o ano passado não funcionou dessa forma - testei especificamente modificadores constantes
e parece que@Ilyas explicou como executar um programa MQL, primeiro todas as constantes e estáticas são inicializadas, não importa onde são definidas, e depois os construtores de classes são chamados
ok, com esta inicialização estática / const - ainda pode ser devidamente distribuída, mas o facto de o modificador const não garantir que o compilador a verifique - muito inesperado - o meu segundo exemplo
Em ambos os seus exemplos, tudo funciona correctamente e é esperado.
Em ambos os seus exemplos, tudo funciona correctamente e é esperado.
espera-se, o modificador const const é 99% certo de que o compilador encontrará o meu erro ao compilar, VS2019 fá-lo, MQL não o faz
o modificador de constantes esperado tem 99% de certeza que o compilador encontrará o meu erro ao compilar, VS2019 fá-lo, MQL não o faz
O que é que considera exactamente um erro?
Não recebo nenhum erro da VS2019.
o ano passado não funcionou dessa forma - testei especificamente modificadores constantes
e parece que@Ilyas explicou como executar o programa MQL, primeiro todas as variáveis constantes e estáticas são inicializadas, não importa onde são descritas, e depois os construtores de classes são chamados.
Parece ser variáveis globais com modificadores const/static e está a usar variáveis locais.
O que é que considera exactamente um erro?
Não recebo nenhum erro da VS2019.
o erro é que o compilador MQL permite expressões ambíguas, se houver um modificador constante, então é uma constante
o mesmo código não foirastreado pelo compilador? a outra situação foi rastreada.
Sharp em VS2019 captou-o antes da sua compilação.
Deve ter significado variáveis globais com modificadores constantes/estáticos, enquanto utiliza variáveis locais.
Posso estar confuso, mas o comportamento do modificador de constância é muito diferente do C#
Uma variável declarada com um modificador constante não pode ser alterada. O compilador mantém um registo disto.
Provavelmente espera-se que faça outra coisa.
Provavelmente espera-se algo diferente dele.
Aparentemente sim, espero que seja o mesmo quando saltar entre MQL e C#.
Construir 2366
Obrigado pelo correio, irei verificar
mq5 - normal. mq4 - quebrado. Pode tomar TypeToBytes_ExampleScript.mq4 a partir daqui. Só se compila se se alterar a extensão para mq5.