Errores, fallos, preguntas - página 2211

 
pavlick_:

¿Es la clase realmente una clase de espacio de nombres?

 
pavlick_:

¿Hay algo que se pueda decir al respecto? ¿Dónde están las búsquedas documentadas de nombres sin calificativos? De la referencia:

---------

Sintaxis

La sintaxis del lenguaje de programación de las estrategias de trading MQL5 es muy similar al lenguaje de programación C++, excepto por algunas características

  • no hay aritmética de direcciones;
  • no hay ningún operador goto;
  • no se puede declarar una enumeración anónima;
  • no hay herencia múltiple.

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

Ni una palabra sobre la búsqueda de nombres no calificados, y esto es algo básico. Bueno, es el propietario quien debe aprender el lenguaje a partir de los posts de Renate, la falta de documentación y la compatibilidad con versiones anteriores, pero entonces el lenguaje da la impresión de ser un juguete para niños.

Lo apoyo, ya es hora de abandonar la ayuda hacia las reglas del lenguaje, porque en esencia mql5 ya es otro lenguaje de programación

 
Konstantin:

Estoy de acuerdo, ya es hora de pasar de las ayudas a las reglas del lenguaje, porque en esencia mql5 ya es un lenguaje de programación diferente

¿Se ha dicho lo contrario en alguna parte?

 
Alexey Navoykov:

¿Es la clase realmente una clase de espacio de nombres?

Sí, tienes razón, se refiere al espacio de nombres. Hay una cláusula separada para las clases, pero el punto es el mismo:

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:

¿He dicho lo contrario en algún sitio?

¿Estoy diciendo lo contrario? ¿Por qué me haces una pregunta?

 
pavlick_:

Error del compilador:

Alerta: 3

No veo ningún error. Creo que esto es correcto.

Primero, asignamos el valor 5 al miembro estático de la estructura y el valor 3 a la variable.

A continuación, el valor de la variable se copia en el miembro estático de la estructura.

Está claro que este miembro estático debe contener el valor que hemos asignado a la variable.

Todo me parece muy lógico.

 
Georgiy Merts:

No veo el error. En mi opinión, todo es correcto.

Me parece - todo muy lógico.

La lógica debe ser uniforme, no selectiva (si no, no es lógica)

Si aquí

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

(*) implica A::a = 2, no ::a = 2

también debería implicar S::q = S::z, no S::q = ::z

 

Lo siento. No lo entiendo. Entonces, ¿me mataste? ¿O no?

¿Puedo orinar en este foro?
 
B0biThec:

Lo siento. No lo entiendo. Entonces, ¿me mataste? ¿O no?

¿Puedo orinar en este foro?

Has sido baneado durante 24 horas por hacer spam. Si sigues haciendo spam, es un baneo de una semana, luego un mes, luego te borran la cuenta, y meas en el lugar correcto.

 
Artyom Trishkin:

Has sido baneado durante 24 horas por hacer spam. Continúa haciendo spam durante una semana, luego un mes, luego borra tu cuenta, y orina en el lugar apropiado.

¿de vuelta de las vacaciones?