2012-02-29 3 views
1

member 구조체가 있습니다. member에는 배열이 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 

가 어떻게 제대로 초기화를 할 수 있으며,이 오류 메시지의 제거를?

편집 : 내 질문이 더 명확 만들어진한다

. 이전 컴파일러에서이 프로그램을 컴파일해야하고 플래그 옵션 -std=c++0x을 사용할 수 없습니다. 플래그를 사용하지 않고 올바르게 수행하려면 어떻게해야합니까?

+1

같은 것을 사용'-std = C++ 0x' 컴파일 플래그합니다. –

+0

@Als이 플래그를 설정할 필요가 없습니다. 내가 초기화를 잘못하고있는 것처럼 보입니다. 나는'-std = C++ 0x'를 사용할 수없는 다른 컴파일러에서 이것을 실행해야합니다. –

+0

이것이 C++ 11 기능이라고 생각합니다. 이 코드가 작동하려면 컴파일러가 C++ 11을 지원해야합니다. – Donotalo

답변

2

경고 메시지가 표시됩니다. g ++ 인수에 -std=c++0x을 추가하십시오. 당신이 오래된 컴파일러에서 이것을 사용할 수 있기를 원한다면 당신은 당신이하고있는 방식으로 초기화리스트를 사용할 수 없다.

대신이 구성원을 변경할 수 있습니다() 그것은 당신이 정확히 무엇을 알려줍니다

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

이 플래그를 설정할 필요가 없습니다. 내가 초기화를 잘못하고있는 것처럼 보입니다. '-std = C++ 0x'를 사용할 수없는 다른 컴파일러에서 이것을 실행해야합니다. –

+0

이 작업을 수행하는 방법에 대한 구문을 알려 주셔서 감사합니다. –

관련 문제