Errori, bug, domande - pagina 2860
![MQL5 - Linguaggio delle strategie di trading integrato nel client terminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
È un comportamento corretto del compilatore? Sembra che A::i non venga creato al momento della chiamata del metodo A::f() che chiama A::i.
Cosa si intende per "creato"?
static è solo un modo per creare un rake per nascondere una variabile globale o una funzione, limitando la visibilità di una funzione o di una classe
La memoria di una variabile globale esiste sempre.
E sì, per le variabili globali l'ordine di inizializzazione è molto importante (voglio dire, evitare di accedere alla variabile prima che sia inizializzata)
Questo esempio ha funzionato...
Nell'esempio precedente ha funzionato...
Hai intenzione di cambiare il compilatore a questo punto? Personalmente, mi piacerebbe tenerlo così com'è.
Cambierete il compilatore a questo punto? Personalmente, vorrei mantenere tutto com'è.
Non abbiamo intenzione di cambiare il comportamento.
Ma c'è un compito differito di rilevare gli errori di accesso alle variabili globali (prima dell'inizializzazione).
Se implementiamo questa funzione, otterremo un avvertimento durante la compilazione del codice precedente: la funzione A::f() è usata per inizializzare A::i, che fornisce l'accesso alla variabile A::i che viene inizializzata.
Se implementiamo la funzione, otterrete un messaggio di avvertimento durante la compilazione del codice precedente: la funzione A::f() è usata per inizializzare A::i, che accede alla variabile A::i che viene inizializzata.
Grazie!
Non abbiamo intenzione di cambiare il comportamento
Allora contraddice il tuo concetto che una variabile è considerata dichiarata quando la dichiarazione è completa. Perché l'hai inventato? Se è così in un caso e diverso in un altro caso
Una buona lingua ha regole uniformi, non il contrarioAllora contraddice il tuo stesso concetto che una variabile è considerata dichiarata quando la dichiarazione è completa. Perché l'hai inventato? Se è così in un caso e diverso in un altro
Una buona lingua ha regole uniformi, non il contrarioSono un ignorante totale, ma non ci avrei pensato (int i = i) nemmeno se avessi bevuto troppo....... 8(
Sono un ignorante totale, ma non avrei pensato a questo (int i = i) nemmeno se avessi bevuto troppo....... 8(
E qual è la principale differenza rispetto all'esempio originale? Togliete le cose inutili e lo otterrete:
Solo che ci sono molte corde lì, e solo una qui.
Se non c'è un errore di compilazione non dovrebbe essercene uno anche qui (e viceversa), altrimenti è un casino
Allora contraddice il tuo stesso concetto che una variabile è considerata dichiarata quando la dichiarazione è completa. Perché l'hai inventato? Se è così in un caso e diverso in un altro
Una buona lingua ha regole uniformi, non il contrarioQual è la differenza fondamentale rispetto all'esempio originale? Togli la roba extra e ce l'hai:
Solo che ci sono molte corde lì, e solo una qui
Se non c'è un errore di compilazione non dovrebbe essercene uno anche qui (e viceversa), altrimenti è un casino.
Ti sbagli, non è la stessa cosa.
La descrizione di una variabile statica in una classe è la sua pre-definizione (simile alla pre-definizione di una funzione o di una classe), ma la posizione, in effetti, dice solo al compilatore dove la variabile sarà memorizzata in memoria e quando dovrebbe essere inizializzata