2013-02-28 2 views
0

Я пользуюсь библиотекой boost::units. Моя проблема заключается в том, что я должен бросить свою длину вектора в двойной вектор для расчета в CMATH:Cast boost :: units type to numeric types

pow(tmpVector.at(cnt),cnt) 

CNT мой счетчик цикла. Если я попытаюсь выполнить расчет без кастования, я верну ошибку, что нет определения отливки для boost::units::length в double.

Я попытался использовать static_cast, который не работает, и numeric_cast библиотеки boost, которая также не работает. Во втором случае я получаю следующее сообщение об ошибке компилятора:

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: есть ли возможность использовать Pow внутри цикла с boost::units и счетчиком цикла как показатель степени?

Вопрос 2: как я могу нарисовать тип boost::units, например. двойной?

Заранее спасибо.

+2

Не могли бы вы предоставить [SSCCE] (http://sscce.org), пожалуйста? Я предполагаю, что у вас нет вектора 'length', а вектор' количество '? Вы пытались делить на «метр», «ноги» или какой-либо блок, который вы хотите использовать? 1 метр, преобразованный в двойной, может быть '100.0' (i см),' 39.3701' (дюймы) или что-то еще. –

+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

Канонический способ превратить значение с единицами в скаляр, чтобы разделить на единицу измерения, как это предложил Арне Мерц в комментариях. Другими словами, что-то вроде:

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

Должно работать.

Смежные вопросы