Erros, bugs, perguntas - página 2211

 
pavlick_:

A classe é realmente uma classe de namespace?

 
pavlick_:

Há alguma coisa a apontar? Onde estão as buscas documentadas de nomes sem qualificadores? A partir da referência:

---------

Sintaxe

A sintaxe da linguagem de programação das estratégias de negociação MQL5 é muito semelhante à linguagem de programação C++, excepto no que diz respeito a algumas características

  • não há aritmética de endereços;
  • não há operador de goto;
  • não se pode declarar uma enumeração anónima;
  • sem herança múltipla.

------------

Nem uma palavra sobre a procura de nomes não qualificados, e isto é material básico. Bem, cabe ao proprietário aprender a língua com os postos de Renate, falta de documentação e compatibilidade retroactiva, mas depois a língua dá a impressão de ser o brinquedo de uma criança.

Apoio-o, já é tempo de abandonar a ajuda para as regras da linguagem, porque na essência o mql5 já é outra linguagem de programação

 
Konstantin:

Concordo, já é tempo de abandonar a ajuda às regras da linguagem, uma vez que o mql5 é essencialmente uma linguagem de programação diferente

Já foi dito o contrário algures?

 
Alexey Navoykov:

A classe é realmente uma classe de namespace?

Sim, tem razão, refere-se ao namespace. Existe uma cláusula separada para as classes, mas a questão é a mesma:

9.2.3.2  Static data members
[class.static.data]
2. The declaration of a non-inline static data member in its class definition is not a definition and may be of
an incomplete type other than cv void. The definition for a static data member that is not defined inline
in the class definition shall appear in a namespace scope enclosing the member’s class definition. In the
definition at namespace scope, the name of the static data member shall be qualified by its class name using
the :: operator. The initializer expression in the definition of a static data member is in the scope of its class (3.3.7).

[Example:
class process {
static process* run_chain;
static process* running;
};
process* process::running = get_main();
process* process::run_chain = running;

The static data member run_chain of class process is defined in global scope; the notation process::run_chain specifies that the member
run_chain is a member of class process and in the scope of class process. In the static data member definition, the
initializer expression refers to the static data member running of class process. — end example]
 
Alexey Viktorov:

Eu disse o oposto algures?

Porque é que me faz uma pergunta?

 
pavlick_:

Erro de compilação:

Alerta: 3

Não vejo nenhum erro. Penso que isto é correcto.

Primeiro, atribuímos o valor 5 ao membro estático da estrutura e o valor 3 à variável.

Depois o valor da variável é copiado para o membro estático da estrutura.

É evidente que este membro estático deve conter o valor que atribuímos à variável.

Tudo isto me parece muito lógico.

 
Georgiy Merts:

Não vejo o erro. Na minha opinião, tudo está correcto.

Parece-me - tudo muito lógico.

A lógica deve ser uniforme, não selectiva (caso contrário, não é lógica)

Se aqui

int a = 1;
struct A {
    void f();
    int a;
};
void A::f()
{
   a = 2; //(*)
}

(*) implica A::a = 2, não ::a = 2

deve também implicar S::q = S::z, não S::q = ::z

[Excluído]  

Lamento. Não compreendo. Então, mataste-me? Ou será que o fez?

Posso fazer chichi neste fórum?
 
B0biThec:

Lamento. Não compreendo. Então, mataste-me? Ou será que o fez?

Posso fazer chichi neste fórum?

Está banido há 24 horas por spamming. Se continuar a fazer spam, é uma semana de proibição, depois um mês, depois a sua conta é apagada, e mija-se no sítio certo.

 
Artyom Trishkin:

Foi banido durante 24 horas por spamming. Continue a fazer spam durante uma semana, depois um mês, depois apague a sua conta, e urine no local adequado.

de volta das férias?