Você está tentando usar um campo estático deuma classe na fase de inicialização antes que pelo menos 1 instância dessa classe tenha sido criada. Na minha opinião, isto é uma perversão... É assim que funciona normalmente:
O princípio do encapsulamento geralmente implica que tais campos devem ser escondidos, e não públicos.
Um campo estático é um campo estático por essa razão, portanto não depende de ter instâncias da classe. Mas se você quiser criar uma instância da classe primeiro - ok, crie-a, mas somente dentro da função. E solicite este campo dele (diretamente ou através de um método) - o resultado é o mesmo novamente.
Alexey Navoykov: Você está confuso com alguma coisa.
Não, eu não estou confuso com nada.
Primeiro as variáveis de nível global, depois as variáveis estáticas e depois as variáveis locais, como aparecem no código.
Este exemplo particular viola a recomendação da documentação de nãoinicializar variáveis com funções. Foi mais fácil para os desenvolvedores escrever tal aviso do que explicar onde eles devem e não devem.
Remova a estática de sua amostra e obtenha o resultado desejado.
Primeiro as variáveis de nível global, depois as variáveis estáticas e depois as variáveis locais, como aparecem no código.
Este exemplo particular viola a recomendação da documentação de nãoinicializar variáveis com funções. Foi mais fácil para os desenvolvedores escrever tal aviso do que explicar onde eles devem e não devem.
Remova a estática de seu exemplo e obtenha o resultado desejado.
"Recomendação de documentação". )) Estou surpreso com você. Você ainda não entendeu, não é mesmo? Há um bug no idioma. Os próprios desenvolvedores estão falando sobre isso, e estão explicando a você como fazer pandeiro corretamente para não se deparar com este bug. Eu fiz questão de esquecer de uma vez por todas este bug.
Alexey Navoykov: "Recomendação de documentação". )) Estou surpreso com você. Você realmente ainda não entendeu o ponto? Há um bug no idioma. Os próprios desenvolvedores estão falando sobre isso, e explicam como fazer o pandeiro corretamente para não se deparar com este bug. Eu fiz questão de esquecer de uma vez por todas este bug.
Não se pode iniciar o valor de algo com uma função. Mesmo se você realmente quiser. Você não entendeu?
Um campo estático é um campo estático, portanto não depende de instâncias da classe. Mas se você quiser criar uma instância da classe primeiro, OK, crie-a, mas somente dentro da função. E solicite este campo a partir dele (diretamente ou via método) - o resultado será o mesmo novamente.
Então, é uma programação processual ou orientada a objetos? Por que devemos executar funções não relacionadas a classes no estágio anterior à inicialização com referência a objetos datilografados além disso. Entendo que a resposta é "porque me apetece". Mas se eu fosse o desenvolvedor, não teria pressa em cancelar tudo e correr para corrigir este comportamento particular, pois é uma arquitetura bastante marginal e, além disso, o problema é facilmente resolvido com a criação de uma instância da classe. Não dentro da função, é claro.
PARA SEMPRE, para não fazer uma bagunça da bagunça que você já fez.
Já o fiz e não me arrependo nem um pouco. Você, por outro lado, parece ter muito prazer em se limitar com restrições artificiais impostas pela MQ. Talvez você seja masoquista? ) E, no entanto, você tão insistentemente tenta me convencer de que esta é a maneira de fazer isso. Não é necessário, é forçado.
Então, é uma programação processual ou orientada a objetos? Por que, de repente, executar funções não relacionadas a classes antes da inicialização em relação a objetos datilografados. Entendo que a resposta é "porque me apetece". Mas se eu fosse o desenvolvedor, não teria pressa em cancelar tudo e correr para corrigir este comportamento particular, pois é uma arquitetura bastante marginal e, além disso, o problema é facilmente resolvido com a criação de uma instância da classe. Não dentro de uma função, é claro.
Então você é um defensor do uso em massa de variáveis globais, como eu o entendo. Então é improvável que você e eu nos entendamos um ao outro.
Além disso, a função em si pode ser um modelo. E a instância criada, respectivamente, deve ser parametrizada pelo mesmo tipo:
template<typename T>
int f()
{
A<T> a;
return a.f();
}
Para login e uso do site MQL5.com, você deve ativar o uso de cookies.
Ative esta opção no seu navegador, caso contrário você não poderá fazer login.
Você entrou na conta. A autenticação de dois fatores foi desativada. Configure-a novamente e escaneie um novo código QR ou continue com a autenticação de dois fatores desativada.
Você encontrou uma maneira de criá-lo.
Você está tentando usar um campo estático deuma classe na fase de inicialização antes que pelo menos 1 instância dessa classe tenha sido criada. Na minha opinião, isto é uma perversão... É assim que funciona normalmente:
O princípio do encapsulamento geralmente implica que tais campos devem ser escondidos, e não públicos.Um campo estático é um campo estático por essa razão, portanto não depende de ter instâncias da classe. Mas se você quiser criar uma instância da classe primeiro - ok, crie-a, mas somente dentro da função. E solicite este campo dele (diretamente ou através de um método) - o resultado é o mesmo novamente.
Você está confuso com alguma coisa.
Não, eu não estou confuso com nada.
Primeiro as variáveis de nível global, depois as variáveis estáticas e depois as variáveis locais, como aparecem no código.
Este exemplo particular viola a recomendação da documentação de nãoinicializar variáveis com funções. Foi mais fácil para os desenvolvedores escrever tal aviso do que explicar onde eles devem e não devem.
Remova a estática de sua amostra e obtenha o resultado desejado.
Não, eu não estou confuso com nada.
Primeiro as variáveis de nível global, depois as variáveis estáticas e depois as variáveis locais, como aparecem no código.
Este exemplo particular viola a recomendação da documentação de nãoinicializar variáveis com funções. Foi mais fácil para os desenvolvedores escrever tal aviso do que explicar onde eles devem e não devem.
Remova a estática de seu exemplo e obtenha o resultado desejado.
Se é uma constante (e a visibilidade global declara em sua maioria constantes, se o código é inteligente), não há outra escolha.
Com relação a tudo em amarelo, tenho uma pergunta: Por quê? Eu já descobri como resolver o problema.AQUI, para não fazer bagunça do que você já fez.
"Recomendação de documentação". )) Estou surpreso com você. Você realmente ainda não entendeu o ponto? Há um bug no idioma. Os próprios desenvolvedores estão falando sobre isso, e explicam como fazer o pandeiro corretamente para não se deparar com este bug. Eu fiz questão de esquecer de uma vez por todas este bug.
Não se pode iniciar o valor de algo com uma função. Mesmo se você realmente quiser. Você não entendeu?
Um campo estático é um campo estático, portanto não depende de instâncias da classe. Mas se você quiser criar uma instância da classe primeiro, OK, crie-a, mas somente dentro da função. E solicite este campo a partir dele (diretamente ou via método) - o resultado será o mesmo novamente.
Então, é uma programação processual ou orientada a objetos? Por que devemos executar funções não relacionadas a classes no estágio anterior à inicialização com referência a objetos datilografados além disso. Entendo que a resposta é "porque me apetece". Mas se eu fosse o desenvolvedor, não teria pressa em cancelar tudo e correr para corrigir este comportamento particular, pois é uma arquitetura bastante marginal e, além disso, o problema é facilmente resolvido com a criação de uma instância da classe. Não dentro da função, é claro.
PARA SEMPRE, para não fazer uma bagunça da bagunça que você já fez.
Não se pode iniciar o valor de algo com uma função. Mesmo se você realmente quiser. Você não entendeu?
Então, é uma programação processual ou orientada a objetos? Por que, de repente, executar funções não relacionadas a classes antes da inicialização em relação a objetos datilografados. Entendo que a resposta é "porque me apetece". Mas se eu fosse o desenvolvedor, não teria pressa em cancelar tudo e correr para corrigir este comportamento particular, pois é uma arquitetura bastante marginal e, além disso, o problema é facilmente resolvido com a criação de uma instância da classe. Não dentro de uma função, é claro.
Então você é um defensor do uso em massa de variáveis globais, como eu o entendo. Então é improvável que você e eu nos entendamos um ao outro.
Além disso, a função em si pode ser um modelo. E a instância criada, respectivamente, deve ser parametrizada pelo mesmo tipo:
O que você faz?