2011-04-28 3 views
2

부울 varaint에 저장 될 값을 명시 적으로 유형 변환 할 수 있습니까 ??부스트 변형에서 동일한 데이터 유형 사용

예 : 여기

typedef int abc; 

typedef int asd; 

typedef boost::variant<abc, char, asd, float> link_try1; 

int main() 
{ 

    link_try1 qw; 
    qw = static_cast<asd>(1234); 
    printf("value of which is:%d", qw.which()); 
    return 0; 
} 

나는() 함수는 3 retrun하고 싶지만 항상 retruns 0 직접 (클래스 변형 민간 변수)를 which_의 값을 변경하는 방법이 있나요 또는 사용되는 데이터 유형을 명시 적으로 지정?

감사 Ankith

답변

7

그것은 가능하지만, 예상대로 작동하지 않습니다.

변형은 키 유형으로 의 역할을합니다. 실제로 주어진 유형 (boost::get 또는 방문을 사용하여)을 요청하면 해당 키와 일치하는 variant의 첫 번째 유형이 선택되므로 여기 asd은 거침없이 무시됩니다.

다른 목적으로 여러 정수를 저장해야하는 경우 BOOST_STRONG_TYPEDEF을 사용하여 다른 정수와 같은 클래스를 만들고 variant의 정수를 사용할 수 있습니다.

+1

+1 나를 가르치려면 BOOST_STRONG_TYPEDEF에 대해 – sehe

관련 문제