[C++] class의 static 멤버로 container를...

wafe의 이미지
1056
points
0
points

class A
{
public:
  static std::map<long, long> longToLongMap;
};

이런 식의 클래스가 있을 때 저 맵의 내용을 초기화하고 싶으면 어떻게 해야할까요? 예를 들어 이런 식으로 말이지요.

longTolongMap[2] = 10;
longTolongMap[4] = 15;

맵을 초기화하는 static 멤버 함수를 만들어서 초기화하는 방법밖에는 없나요? 그 함수를 불러주어야할 시기가 참 오묘한지라...

doldori의 이미지
5441
points

map을 초기화하는 시점이 오묘하다는 것이 무슨 뜻인지 모르겠습니다.

0
points

map을 초기화하는 시점이 오묘하다는 것이 무슨 뜻인지 모르겠습니다.
main() 함수를 실행하기 전에 초기화가 완료돼야 한다면 이런 방법은 있습니다.

class A 
{ 
public: 
    static std::map<long, long> longToLongMap; 
private: 
	class bootstrap 
	{ 
	public: 
		bootstrap(std::map<long, long>& m) 
		{ 
			m[2] = 10; 
			m[4] = 15; 
		} 
	}; 
    static bootstrap bs; 
}; 

std::map<long, long> A::longToLongMap; 

A::bootstrap A::bs(A::longToLongMap); 

int main()
{
    /* ... */
}

boost의 assign 라이브러리를...

0
points

Boost를 보면 Assignment라는 라이브러리가 있습니다.

http://www.boost.org/libs/assign/index.html

map_list_of 를 보세요.

(저도 문서만 보고 써보진 않았습니다)

댓글 보기 옵션

원하시는 댓글 전시 방법을 선택한 다음 "설정 저장"을 누르셔서 적용하십시오.