2012-12-18 11 views
6

को मापने की मात्रा मुझे मूल्यांकन के लिए लाइब्रेरी में मात्रा का मूल्य पारित करने की आवश्यकता है। boost units library एसआई में दोहरे मान लेता है, इसलिए बूस्ट इकाइयां लाइब्रेरी आवश्यकता को सुनिश्चित करने में बहुत आकर्षक है। हालांकि, मुझे मात्रा को दोहरे मूल्य में कैसे डालना चाहिए? प्रलेखन और उदाहरण इस बात से बचने के लिए प्रतीत होता है क्योंकि इरादे को बनाए रखने के इरादे से सही है।कास्टिंग बूस्ट :: इकाइयां ::

कुछ की तरह:

quantity<pressure> p(101.1 * kilo * pascals); 
double dblP = static_cast<double>(p); // double value in Pascals 

हेडर के माध्यम से जा रहे हैं पता चलता है ... कि सही तरीका आधार प्रकार के कास्ट करने के लिए है?

p.value(); 
+1

तो अपने सवाल यह है कि "हेडर पता चलता है ...' p.value() 'के माध्यम से जा रहे हैं"? –

+0

अच्छा बिंदु - क्षमा करें मैंने कहा कि सवाल के बाद पहले पूछा गया था। मैं जो सुनिश्चित करना चाहता हूं वह है .value() वापस लौटाता है जो मैं विश्वसनीय रूप से अपेक्षा करता हूं। हां, क्या यह किसी भी आवश्यक रूपांतरण के बाद है जैसे पीएसआई से पा? – ccook

उत्तर

3

reference documentation से पता चलता है कि या तो निहित डाले या value() सदस्य विधि का इस्तेमाल किया जा सकता है।

  1. operator value_type() const;

    अंतर्निहित रूपांतरण VALUE_TYPE लिए मूल्य

  2. const value_type & value() const;

    निरंतर एक्सेसर अनुमति दी है

+0

धन्यवाद, यह संदर्भ बहुत उपयोगी है (और कीवर्ड मात्रा इकाई बूस्ट कास्ट के साथ ढूंढना मुश्किल है) – ccook

+0

'ऑपरेटर value_type() const;' केवल आयामी मात्राओं के लिए मौजूद है। अन्यथा यह संभव होगा: 'डबल वी = मात्रा () '। – alfC

8

मुझे लगता है कि आप देख रहे हैं यह है:

quantity<pressure> p(101.1 * kilo * pascals); 
double dblP = p/pascals; // double value in Pascals 

यदि आप इकाई बाहर विभाजित करते हैं, आप एक quantity<dimensionless> जो परोक्ष एक double में रूपांतरित कर देगा के साथ छोड़ दिया जाता है। यह आंतरिक प्रतिनिधित्व (जो value() रिटर्न) इकाइयों के बारे में किसी भी सवाल को समाप्त करता है।