2012-03-04 29 views
8

Tener una estructura como esta en C++ 11:C++ 11 Estructura correcta inicialización

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

supuesto de que se inicializan como esto:

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

O así:

von v = {}; 

Ambas formas parecen funcionar, pero el compilador advierte acerca de -Withsing-field-initializers en el último ejemplo.

Editar: Aquí están mis opciones de compilación: g ++ main.cpp -ansi -Wall -Wextra -WeffC++ -std = C++ 0x. Estoy usando g ++ (Debian 4.6.2-12) 4.6.2

+2

No hay listas de inicializadores en su ejemplo, solo listas de inicialización. La mejor manera podría ser 'von v {};'. –

+1

von v {}; también se queja de faltantes de inicializadores para los miembros. Es una advertencia de inicialización de campo de abandono. – 01100110

+0

Hm, tienes razón. Es una pena que no se pueda inicializar el valor de una variable automática ... 'von v {{}, 0, {}};' es la siguiente mejor opción. –

Respuesta

1

Esto no requiere initializer_list y funciona perfectamente bien con C++ 03. Editar: (Ok, para la inicialización del vector necesita C++ 11) En una inicialización de estructura o matriz, todos los valores no explícitamente dados se inicializan en cero, así que si eso es lo que quiere = {}; funcionará bien