Erros, bugs, perguntas - página 2563
![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
https://www.mql5.com/ru/docs/basis/oop/staticmembers
?
?
Tem um modificador estático no exemplo, se o remover, o compilador dará um aviso como deve
estática pode ser acedida a partir de qualquer parte do seu código com o operador de resolução de contexto... a partir de qualquer fragmento de código! (não me lembro do âmbito, não o verifiquei recentemente, mas muito provavelmente será global, como se fosse descrito no topo do código, ou seja, não importa onde o método/campo estático foi declarado)
Um statik pode ser acedido a partir de qualquer parte do código, utilizando a declaração de resolução de contexto... a partir de qualquer parte do código! (não me lembro do âmbito, não o verifiquei recentemente, mas muito provavelmente será global, como se estivesse descrito no topo do código, ou seja, não importa onde o método/campo estático é declarado)
Há quanto tempo é que se tornou assim :)?
Todas as mesmas regras se aplicam à estática (privada, protegida, pública), apenas não requerem a criação de objectos.
Este é um erro óbvio.
Há quanto tempo é assim :)?
Não sei, posso dizer com certeza que há uns meses atrás@Ilyas admin estava a explicar o procedimento de inicialização da estática, e ele mencionou que os métodos e campos de estática são inicializados juntamente com variáveis globais no arranque do programa MQL... vá mais longe e procure nos seus posts
Todas as mesmas regras se aplicam à estática (privada, protegida, pública), apenas não requerem a criação de objectos.
Este é um erro óbvio.
Não estou pronto para discutir e não quero discutir, mas o texto de ajuda indica o comportamento dos métodos estáticos
o código MQL está a dar grandes passos em direcção ao comportamento dos programas C#, a situação é semelhante lá, assim como se o programador decidir utilizar o operador de resolução de contexto, significa que recusa conscientemente a ajuda do compilador para identificar violações da integridade dos dados na classe, existem formas clássicas de obter métodos e campos sem operador de resolução de contexto
UPD: Decidi reescrever pouco a pouco a minha biblioteca de MQL, estou horrorizado por notar que escrevo como vi nos populares códigos MQL nomes de métodos e campos que coincidem com nomes de palavras reservadas....imho este é também um passo para evitar ajuda do compilador quando "quebra" dependências.... mais ou menos ))))
Igor Makanu:
como se o programador decidir utilizar o operador de resolução de contexto, significa que recusa conscientemente a ajuda do compilador para detectar a violação da integridade dos dados na classe, existem formas clássicas de obter métodos e campos sem operador de resolução de contexto
Penso que fumou demasiado OOP. Dê um descanso e depois volte com a cabeça fria. A declaração de resolução de contexto define a visibilidade mas não tem qualquer efeito no acesso.
Penso que já teve demasiada OOP, descanse e depois com uma nova cabeça. a declaração de resolução de contexto define visibilidade mas não tem qualquer efeito no acesso.
Bem, cabe-me a mim decidir o que fumar e quando descansar ))))
SZY: há sempre muitos truques em qualquer língua com acesso a conteúdos de memória. Li os passatempos nos comentários, há lutas regulares sobre python e c++, mais uma vez - há formas mais humanas de trabalhar com campos e métodos, se decidiu que é mais rápido, então não deve culpar o que obtém - em todos os compiladores pode sempre invadir onde não deve)))
Não sei, posso dizer com certeza que há uns meses atrás@Ilyas admin estava a explicar o procedimento de inicialização estática e mencionou que os métodos estáticos e campos estáticos são inicializados juntamente com variáveis globais no arranque do programa MQL... vá mais longe e procure nos seus posts
não estou pronto para discutir e não quero discutir, mas o texto de ajuda representa o comportamento dos métodos estáticos
"privado - permite o acesso a variáveis e métodos de uma classe apenas a partir de métodos dessa classe. "
Onde é que a palavra "apenas" não é clara?
OnStart não é um método de classe A, de acordo com o exemplo.
"privado - permite o acesso a variáveis e métodos de uma classe apenas a partir de métodos dessa classe. "
Onde é que a palavra "apenas" não é clara?
OnStart não é um método de classe A, de acordo com o exemplo.
Não estamos a falar do modificador privado, mas do modificador estático - fazer testes e ver como se comporta a estática no MQL
Não sei, posso dizer com certeza que há uns meses atrás@Ilyas admin estava a explicar o procedimento de inicialização estática e mencionou que os métodos estáticos e campos estáticos são inicializados juntamente com variáveis globais no arranque do programa MQL... vá mais longe e procure nos seus posts
não estou pronto para contestar, mas o texto de ajuda indica o comportamento dos métodos estáticos
E imho, não creio que seja necessário confirmar com argumentos - a MQL está a avançar muito em direcção ao comportamento dos programas C#, tem uma situação semelhante, bem como se o programador decidir utilizar o operador de resolução de contexto, isso significa que ele declina conscientemente a ajuda do compilador para identificar violações da integridade dos dados na classe, existem formas clássicas de obter métodos e campos sem operador de resolução de contexto
UPD: Decidi reescrever pouco a pouco a minha biblioteca de MQL, estou horrorizado por reparar que estou a escrever como vi nos populares códigos MQL nomes de métodos e campos que coincidem com nomes de palavras reservadas....imho isto é também um passo para evitar ajuda do compilador quando "quebra" dependências.... mais ou menos ))))
h ttps://pikabu.ru/story/nevozmozhno_tak_nevozmozhno_2129852
?
é uma situação estranha, tudo fora da classe tem estado a trabalhar há muito tempo com os staichiqs. e estou apenas a fazer um grande alarido sobre isso.... Só por diversão, reproduza você mesmo o código:
Vê uma instância de objecto? e existe em MQL ;)
SZZ: E existe ao nível da ajuda... qual é o seu problema comigo?
https://www.mql5.com/ru/docs/basis/oop/staticmembers
Não ser capaz de declarar estatisticamente os membros da classe resultaria na necessidade de declarar estes dados a nível do programa global. Isto cortaria a relação entre os dados e a sua classe, e é também inconsistente com o paradigma básico do OOP de combinar dados e métodos numa classe para lidar com eles. Um membro estático permite a existência de dados de classe que não são específicos de uma instância individual no âmbito da classe.