2009-11-22 7 views
1

지금 부스트의 무작위 라이브러리를 사용하여 임의의 열거자를 생성합니다. 기본적으로 임의의 생성자의 분포를 지정하고 난수를 가져온 다음 암시 적으로 해당 값을 다시 열거 형으로 캐스팅하는 암시 적 변환을 사용하고 있습니다.부스트 :: 임의 및 열거 형

는 예 : (minColor 및 maxColor는 열거 형의 매개 변수입니다)

boost::mt19937 randGen(std::time(0)); 
boost::uniform_int<> dist(minColor, maxColor); 
boost::variate_generator< boost::mt19937&, boost::uniform_int<> > 
    GetRand(randGen, dist); 

return static_cast<Common::Color> (GetRand()); 

내가 부스트의 라이브러리를 열거 유형에 대한 분포를 만들기 같은 것을 지원하는지 궁금하고, 따라서 임의로 선택된 열거를 돌려줍니다. 이 C++의 0xs으로 이해 것이지만 뭔가 같은 ...

boost::uniform<Common::Color> dist(minColor, maxColor); 

답변

0

강하게 당신이 일반적으로 가능하지 않을 wan't 무엇 열거를 입력했습니다.

열거 용어는 열거 형 하부 형의 열거 된 값을 보유 구별.
표준에서는 주로 모든 값을 포함 할 수있을만큼 큰 기본 형식이 필요하며 가능한 경우 int으로 크지 않으며 sizeof(someEnum)이 반환하는 크기는 기본 형식 (§7.2.5 C++ 03)의 크기와 같습니다. .

enum이 사용/선언되는 방식을 제한하지 않으면 서 열거 형의 크기는 알지만 부호의 크기는 알지 못합니다. 최소최대 인수를 사용할 수없는 형식 안전 생성자를 정의합니다.

(!) 참고 :
나 또한 개인적으로 다소 오해의 소지가 열거 유형과 템플릿되는 분포를 찾을 것입니다.
범위에있는 열거 형 값에 대해서만 배포가 정의되어 있습니까?
범위에있는 기본 유형의 모든 값에 대해 정의되어 있습니까?