2013-02-28 3 views
0

boost::units 라이브러리를 사용하고 있습니다. 내 문제는 내 길이 벡터를 cmath 계산을위한 이중 벡터로 변환해야한다는 것입니다.부스트 :: 단위를 숫자 형식으로 입력하십시오.

pow(tmpVector.at(cnt),cnt) 

cnt는 루프 카운터입니다. 캐스팅하지 않고 계산을 시도하면 boost::units::length에 대한 캐스팅 정의가 double에 없다는 오류를 되 살릴 수 있습니다.

작동하지 않는 static_cast와 작동하지 않는 부스트 라이브러리의 numeric_cast를 사용하려고했습니다. 두 번째 경우 나는 다음과 같은 컴파일러 오류가 나타납니다 내가 인터넷에서 아무 것도 발견

e:\testvs12\libraries\thirdparty\boost\boost\numeric\conversion\converter_policies.hpp(187): error C2440: 'static_cast': 'const std::vector<_Ty>' can not convert into 'std::vector<_Ty>' 

을 - 당신의 하나가 나에게

질문 1을 도울 수 있기를 바랍니다 : 루프 내부 펑을 사용할 수있는 가능성이 boost::units 및 루프 카운터를 지수로 사용 하시겠습니까?

질문 2 : boost::units 유형을 어떻게 할 수 있습니까? 두 배?

미리 감사드립니다.

+2

당신은 [SSCCE] (http://sscce.org)를 섭취 할 수 있습니까? 나는 당신에게'length'의 벡터가없고'quantity '의 벡터를 가지고 있다고 가정합니까? 'meter','feet' 또는 당신이 사용하기 원하는 단위로 나눠 보려고 했습니까? 1 미터가 이중으로 변환되면 '100.0'(i cm), '39.3701' (inches) 또는 다른 값이 될 수 있습니다. –

+0

이것은 무엇입니까? tmpVector.at (cnt) .value() http://www.boost.org/doc/libs/1_37_0/doc/html/boost/units/quantity.html#id3387713-bb – qPCR4vir

+0

죄송합니다, 예 수량 KaHo

답변

0

단위를 사용하여 값을 스칼라로 변환하는 표준 방법은 설명에서 Arne Mertz가 제안한 측정 단위를 하나의 단위로 나누는 것입니다. 다른 말로 표현하면 다음과 같습니다.

pow(tmpVector.at(cnt)/boost::units::meters,cnt) 

작동해야합니다.

관련 문제