2012-11-03 5 views
3

며칠 전 부스트 라이브러리를 사용하기 시작 했으므로 제 질문은 사소한 것일 수 있습니다. 두 개의 동일한 유형 변형을 static_visitor와 비교하려고합니다. 다음을 시도했지만 컴파일하고 싶지 않습니다.boost_visitor와 두 변형을 비교하십시오.

struct compare:public boost::static_visitor<bool> 
{ 
    bool operator()(int& a, int& b) const 
    { 
     return a<b; 
    } 

    bool operator()(double& a, double& b) const 
    { 
     return a<b; 
    } 
}; 
int main() 
{ 
    boost::variant<double, int > v1, v2; 
    v1 = 3.14; 
    v2 = 5.25; 
    compare vis; 
    bool b = boost::apply_visitor(vis, v1,v2); 
    cout<<b; 
    return 0; 
} 

도움이나 의견을 보내 주셔서 감사합니다.

+0

감사합니다. 내 문제가 해결되었습니다. – Zozzzzz

+0

@llonesmiz, 답 신용으로 추가하고 질문을 닫습니다. –

답변

1

llonesmiz가 답변에서 나에게 말했다. 그러나 그것은 사라졌다. 누군가 비슷한 문제가 있다면 도움이 될 것입니다 : 다른 연산자에서 int와 double의 모든 조합을 처리해야했습니다. 이를 구현하는 가장 간단한 방법은 다음과 같은 템플릿을 사용하는 것입니다.

struct my_less : boost::static_visitor<bool> 
{ 
    template<typename T, typename U> 
    bool operator()(T a, U b) const 
    { 
     return a<b; 
    } 

}; 
+0

'new bool'? 컴파일하면 _pointer_to _boolean_ 변환으로 인해 항상 'true'를 반환합니다. –

+0

죄송합니다, 나는 그것을 망쳤습니다 ... 제가 bool *을 사용할 때 그것은 최종 코드에있었습니다 ... 나는 그것을 고쳐 씁니다. – Zozzzzz

관련 문제