Erros, bugs, perguntas - página 2565

 
Igor Makanu:

Não vou discutir

Decidi descrever o problema que estamos a discutir. A propósito, o comportamento da MQL tornou-se cada vez mais semelhante ao do C#, o código não compila

//+------------------------------------------------------------------+
class A
{
private:
   int               count;
public:
                     A():count(0) {}
   static void       inc()        { count++; }

};

A a;
//+------------------------------------------------------------------+
void OnStart()
{
   a.inc(); //code generation error 
   A::inc();
   
}
//_______________________________________________________________________

Eu implementei o método Inc() - funciona com campos protegidos

se adicionei um modificador estático - onde é que o compilador deve parar de verificar? - decidi que preciso de um ponto de entrada para um objecto fora do âmbito?

 
Igor Makanu:

Se tiver escrito um método/campo estático ou aplicado um :::: - não confie no compilador

Os insectos acontecem. Eu escrevo código como antes: isto, ::, const, estático, privado, público, protegido são colocados onde for possível.

Preciso dele antes de mais para uma rápida compreensão do meu código. Em segundo lugar, quero que o compilador me ajude enquanto escrevo o meu código. Ajuda-me muito.


Ontem enfrentei tal situação pela primeira vez. Escrevi um código de 5Kb, uma parte do qual foi copiado e colado a partir de vários fragmentos. E ao compilá-lo pela primeira vez, não apareceu um único erro ou aviso. Fiquei surpreendido.

 
Igor Makanu:

Decidi descrever o problema que estamos a discutir

//+------------------------------------------------------------------+
class A
{
private:
   int               count;
public:
                     A():count(0) {}
   static void       inc()        { count++; } // Здесь ошибка, о которой компилятор сейчас не сообщает.

};
 
Igor Makanu:

Decidi descrever o problema que estamos a discutir. A propósito, o comportamento da MQL parece-se cada vez mais com C#, o código não compila

o método inc() - funciona com campos protegidos

se adicionei um modificador estático - onde deve o compilador parar de verificar? - tomei a decisão de que preciso de um ponto de entrada para um objecto fora do âmbito, certo?

A sua variável de contagem não é estática.

Como é que uma função estática sabe a que objecto pertence esta variável?

 
Koldun Zloy:

A sua contagem variável não é estática.

Como é que uma função estática saberá a que objecto pertence esta variável?

não um princípio, quero dizer que qualquer implementação de trabalho com métodos estáticos não terá uma verificação completa pelo compilador, e toda a responsabilidade pelo controlo recai sobre o programador

ok, não importa, porque não importa - escrevi a mesma coisa duas vezes no mesmo diahttps://www.mql5.com/ru/forum/1111/page2564#comment_13249284

 
Igor Makanu:

Quero dizer que qualquer implementação de métodos estáticos não será totalmente validada pelo compilador, e toda a responsabilidade pelo controlo recai sobre o programador

Onde leu isto?

Foi você que o inventou e o repetiu sem parar?

 
Andrey Barinov:

Onde leu isso?

Foi você que o inventou e continua a repeti-lo?

Não fui eu que inventei, é a minha opinião... como, em princípio, fechar todo o trabalho com estática apenas dentro da estática como em C# - então não haverá perguntas ou erros ;)

 
Slava:

Algumas perguntas sobre a plataforma:

1. será permitido um intervalo de negociação para VPs via MOEX (por exemplo, EURRUB_TOM)? Neste momento é impossível saber ao certo se será estabelecido um limite, uma vez que não há acesso à gama (preços máximos e mínimos possíveis). Acrescente, por favor.

2. É possível adicionar ao terminal e meta-editor um estado de auto-salvamento a cada N minutos? Muito ausente, pois com uma súbita desconexão volta-se ao estado no início do programa com perda de todas as mudanças! Muito stressante!

 

MQ, vocês estão bem com o armazenamento? Demora 10-20 segundos a submeter um ficheiro. Costumava ser instantâneo...

Acrescentado: às vezes o compromisso apenas fica pendurado...

 
No indicador no gráfico com a ferramenta personalizada, chamar a função CopyBuffer(com o cabo da máscara habitual para símbolos reais, por exemplo para EURUSD) retorna o erro 4806. O símbolo personalizado é baseado na fórmula XAUUSD/31.1035*USDRUB. O mesmo indicador personalizado com as mesmas configurações funciona bem num gráfico real (como XAUUSD, GBPUSD, etc.). Qual poderá ser o problema?