Io disattento:) Può spiegare perché questo è necessario? Perché non si può usare il costruttore?
Perché scrivendo il mio codice mi sono imbattuto in una situazione in cui la mia struttura è coinvolta in un'unione. La soluzione con un costruttore vuoto mi è venuta subito in mente, ma era un peccato che il mio codice avesse un'unione. Ecco perché facevo questa domanda non per il gusto di annoiarmi, ma per un uso pratico.
Eseguirlo, ha visto il problema. Sembra che solo le strutture con campi pubblici siano permesse con le unioni ora. Allora sarebbe possibile scrivere struct = {0};
Alexey Kozitsyn: Eseguirlo, ha visto il problema. Sembra che solo le strutture con campi pubblici siano permesse con i sindacati ora. Allora sarebbe possibile scrivere struct = {0};
Forse ti ho frainteso di nuovo, ma questo codice funziona senza alcun avvertimento:
struct STRUCT
{
//private:int i;
};
// Нужен только для того, чтобы показать необходимость решения без конструктора
union UNION
{
STRUCT Struct; // конструктора не должно бытьint i;
};
// Обходим Warning "possible use of uninitialized variable"template <typename T>
void StructInit( T& ) {}
STRUCT Func()
{
STRUCT Res = {0}; // ок!// StructInit(Res); // с этой строкой Warning не появляется, но это какой-то абсурд!return(Res);
}
voidOnStart()
{
Func();
}
Forse ti ho frainteso di nuovo, ma questo codice funziona senza alcun avvertimento:
Esatto, le strutture pubbliche sono inizializzate. Ma l'unione non c'entra niente.
È interessante notare che se una struttura con un campo nascosto è resa un campo pubblico di una nuova struttura, allora anche la nuova non si inizializzerà, anche se tutti i campi sono aperti.
Aggiungere un costruttore predefinito alla struttura.
Forum sul trading, sistemi di trading automatico e test di strategie di trading
Bug, bug, domande
fxsaber, 2017.09.06 09:38
Io disattento:) Può spiegare perché questo è necessario? Perché non si può usare il costruttore?
O è per mostrare un errore di inizializzazione della struttura con un campo chiuso?
Io disattento:) Può spiegare perché questo è necessario? Perché non si può usare il costruttore?
Perché scrivendo il mio codice mi sono imbattuto in una situazione in cui la mia struttura è coinvolta in un'unione. La soluzione con un costruttore vuoto mi è venuta subito in mente, ma era un peccato che il mio codice avesse un'unione. Ecco perché facevo questa domanda non per il gusto di annoiarmi, ma per un uso pratico.
Ho dovuto scrivere questo twist per evitare questo "bug" (è un bug o no?).
Non ho ancora visto altre soluzioni.
Eseguirlo, ha visto il problema. Sembra che solo le strutture con campi pubblici siano permesse con i sindacati ora. Allora sarebbe possibile scrivere struct = {0};
Questo non è il caso.
Questo non è il caso.
Forse ti ho frainteso di nuovo, ma questo codice funziona senza alcun avvertimento:
Forse ti ho frainteso di nuovo, ma questo codice funziona senza alcun avvertimento:
Esatto, le strutture pubbliche sono inizializzate. Ma l'unione non c'entra niente.
È interessante notare che se una struttura con un campo nascosto è resa un campo pubblico di una nuova struttura, allora anche la nuova non si inizializzerà, anche se tutti i campi sono aperti.
Ciao, potresti dirmi se è possibile dichiarare un array specificando il numero di elementi in esso con una variabile? Se no, come si può fare?
Ciao, potresti dirmi se è possibile dichiarare un array specificando il numero di elementi in esso con una variabile? Se no, come si può fare?
https://www.mql5.com/ru/docs/array/arrayresize
Ciao, potresti dirmi se è possibile dichiarare un array specificando il numero di elementi in esso con una variabile? Se no, come si può fare?
ArrayResize()