2011-12-16 3 views
1

내가 예를 들어, 클래스 내에 벡터를 초기화하려면 :클래스 내부의 정적 벡터를 초기화하는 가장 편리한 방법은 무엇입니까?

class A { 
    private: 
    static std::vector<double> label_map; 
}; 

나는이 정적 벡터를 초기화하고 싶다면, 할 수있는 가장 좋은 방법은 무엇입니까? 나는 GCC 4.4에서 시작, 그것은 C + +0의 새로운 기능을 지원한다는 다른 글에서 읽은 우리는 직접

static std::vector<double> label_map = {1, 2, 3, 4}; 

그러나 그것은 나를 위해 작동하지 않는 것 같습니다 사용할 수 있습니다. 마무리

+1

C++ 컴파일러를 얻는 방법은 무엇입니까? GCC 웹 사이트에서 다운로드하십시오 ... –

+0

@KerrekSB : 내 GCC 버전은 4.6.2이므로 컴파일러의 문제는 아닙니다. – derekhh

+5

글쎄,'-std = C++ 0x'를 명령 줄에 추가 하시겠습니까? –

답변

5

그래서 ... : g++ -std=c++0x -c -o thefile.o thefile.cpp # ...

// thefile.cpp 

class Foo 
{ 
    static std::vector<int> v; 
}; 

std::vector<int> Foo::v { 1, 2, 3, 4 }; 

컴파일.

+0

중괄호의 두 번째 쌍은 왜? – Xeo

+0

@ Xeo : 흠, 선호하는 초기화 초기화 구문? 'v {1,2,3}','v = {1,2,3}','v ({1,2,3})'도 작동합니다. 저는 항상'v {il}'을 상상해 봅니다.'il'은 기존의 초기화리스트이고, 복잡한 클래스 생성자 중 일부입니다 ... 제가 생각한 맛의 문제입니다. –

+0

우와 ... 나는 결코 추측하지 못했을 것이다. 이 표준은 준수합니까? 편집 : NVM, 나는 커맨드 라인에서 C++ 0x를 보았다. –

관련 문제