2012-03-04 17 views
8

Avere una struttura come questa in C++ 11:C++ 11 corretta inizializzazione Struttura

struct von 
{ 
    std::string Name; 
    unsigned int ID; 
    std::vector<std::string> Checks; 
}; 

Qualora sia inizializzato in questo modo:

von v = {"",0,{}}; 

O come questa:

von v = {}; 

Entrambi i metodi sembrano funzionare, ma il compilatore mette in guardia sugli inizializzatori del campo di sformatura sull'ultimo esempio.

Modifica: Ecco le opzioni del mio compilatore: g ++ main.cpp -ansi -Wall -Wextra -WeffC++ -std = C++ 0x. Sto usando g ++ (Debian 4.6.2-12) 4.6.2

+2

Nessun elenco di inizializzatori nell'esempio, solo inizializzazione dell'elenco. Il modo migliore potrebbe essere 'von v {};'. –

+1

von v {}; si lamenta anche di inizializzatori mancanti per i membri. È un avvertimento di inizializzatore del campo -Wissing-field. – 01100110

+0

Hm, hai ragione. È un peccato non poter valutare - inizializzare una variabile automatica ... 'von v {{}, 0, {}};' è la cosa migliore. –

risposta

1

Questo non richiede initializer_list a tutti e funziona perfettamente bene con C++ 03. Modifica: (Ok, per l'inizializzazione del vettore è necessario C++ 11) In un'inizializzazione di struct o array, tutti i valori non specificati sono inizializzati a zero, quindi se questo è ciò che vuoi = {}; funzionerà bene

Problemi correlati