2012-02-29 2 views
1

У меня есть структура, называемая member. В пределах member У меня есть массив std::string с именем months, который я хотел бы инициализировать значениями по умолчанию. Это, как я это делаю в данный момент:Инициализировать значения массива, который находится внутри структуры

template <typenameT>                        
struct member                          
{                             

    std::string months[12];                       
    std::string name;                        
    T hours_worked[12];                        
    T dues[12];                          

    member() : months{"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"} {};  
}; 

Однако всякий раз, когда я компилирую я получаю это предупреждение:

warning: extended initializer lists only available with -std=c++0x or -std=gnu++0x 

Как я могу сделать инициализацию правильно и избавиться от этого сообщения об ошибке?

Edit:

я СДЕЛАНО мой вопрос более ясным. Мне нужно скомпилировать эту программу на старшем компиляторе, и флаг -std=c++0x не будет доступен мне. Как я могу сделать это правильно, не используя флаг.

+1

Это говорит вам, что делать, используйте '-std = C++ 0x' флаг компиляции. –

+0

@Als Мне не нужно устанавливать этот флаг. Кажется, что я делаю инициализацию неправильно. Я должен запустить это на другом компиляторе, где '-std = C++ 0x' недоступен. –

+0

Я думаю, что это C++ 11. ваш компилятор должен поддерживать C++ 11 для работы этого кода. – Donotalo

ответ

2

В нем сообщается предупреждение. Попробуйте добавить -std=c++0x к вашим аргументам g ++. Если вы хотите использовать это в компиляторе старше, вы не сможете использовать списки инициализаций так, как вы это делаете.

Вместо этого вы могли бы изменить элемент(), чтобы быть чем-то вроде

member() 
{ 
    months[0] = "January"; 
    months[1] = "February"; 
    ...//etc 
} 
+0

Мне не нужно устанавливать этот флаг. Кажется, что я делаю инициализацию неправильно. Я должен запустить это на другом компиляторе, где '-std = C++ 0x' недоступен –

+0

Спасибо, синтаксис, как это сделать, мне нужно. –