Errori, bug, domande - pagina 2211

 
pavlick_:

La classe è davvero una classe dello spazio dei nomi?

 
pavlick_:

C'è qualcosa che può dire sulla questione? Dove sono le ricerche documentate per i nomi senza qualificatori? Dal riferimento:

---------

Sintassi

La sintassi del linguaggio di programmazione delle strategie di trading MQL5 è molto simile al linguaggio di programmazione C++, tranne che per alcune caratteristiche

  • non c'è aritmetica degli indirizzi;
  • non c'è un operatore goto;
  • non si può dichiarare un'enumerazione anonima;
  • nessuna eredità multipla.

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

Non una parola sulla ricerca di nomi non qualificati, e questa è roba di base. Beh, sta al proprietario imparare il linguaggio dai post di Renate, dalla mancanza di documentazione e dalla retrocompatibilità, ma poi il linguaggio dà l'impressione di essere un giocattolo per bambini.

Lo sostengo, è ora di abbandonare l'aiuto verso le regole del linguaggio, perché in sostanza mql5 è già un altro linguaggio di programmazione

 
Konstantin:

Sono d'accordo, è giunto il momento di passare dall'aiuto alle regole del linguaggio, poiché mql5 è essenzialmente un linguaggio di programmazione diverso

È stato detto il contrario da qualche parte?

 
Alexey Navoykov:

La classe è davvero una classe dello spazio dei nomi?

Sì, hai ragione, si riferisce allo spazio dei nomi. C'è una clausola separata per le classi, ma il punto è lo stesso:

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:

Ho detto il contrario da qualche parte?

Ho detto qualcosa in contrario? Perché mi fa una domanda?

 
pavlick_:

Errore del compilatore:

Allarme: 3

Non vedo un errore. Penso che questo sia corretto.

Per prima cosa, assegniamo il valore 5 al membro statico della struttura e il valore 3 alla variabile.

Poi il valore della variabile viene copiato nel membro statico della struttura.

È chiaro che questo membro statico dovrebbe contenere il valore che abbiamo assegnato alla variabile.

Mi sembra tutto molto logico.

 
Georgiy Merts:

Non vedo l'errore. Secondo me, tutto è corretto.

Mi sembra - tutto molto logico.

La logica dovrebbe essere uniforme, non selettiva (altrimenti non è logica)

Se qui

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

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

dovrebbe anche implicare S::q = S::z, non S::q = ::z

 

Mi dispiace. Non capisco. Allora, mi hai ucciso? O l'hai fatto?

Posso fare pipì in questo forum?
 
B0biThec:

Mi dispiace. Non capisco. Allora, mi hai ucciso? O l'hai fatto?

Posso fare pipì in questo forum?

Sei stato bannato per 24 ore per spamming. Se continui a spammare, è una settimana di ban, poi un mese, poi ti cancellano l'account, e pisci nel posto giusto.

 
Artyom Trishkin:

Sei stato bandito per 24 ore per spamming. Continua a spammare per una settimana, poi un mese, poi cancella il tuo account e piscia nel posto giusto.

di ritorno dalle vacanze?

Motivazione: