कुछ सी ++ कोड में, मैं बहुत सारे बदलते डेटा को स्टोर करने के लिए पूर्णांक का उपयोग करता हूं। मेरे प्रोग्राम का विश्लेषण करने के लिए, मैं कुछ चरों में कुछ परिवर्तन लॉग करना चाहता हूं, जैसे कि कितनी बार एक निश्चित मान असाइन किया जाता है, और कितनी बार वह असाइनमेंट अनावश्यक होता है (नया मान पुराने मान के समान होता है।)सी ++ मूल प्रकार से प्राप्त होता है
यदि प्रकार एक वर्ग फू था, तो मैं सिर्फ एक नया लॉगिंगफू प्राप्त करूंगा और अपना लॉगिंग डेटा उस सदस्य फ़ंक्शन में जोड़ूंगा जिसमें मुझे रूचि थी, और उसके बाद अभिभावक सदस्य फ़ंक्शन को कॉल करें। मुझे नए प्रकार का उपयोग करने के लिए अपना कोड अपडेट करना होगा, लेकिन जब तक मैं मूल रूप से टाइपपीफ के साथ संगत था, यह एक पंक्ति परिवर्तन है।
मेरी समस्या यह है कि वे चर जो मैं लॉगिंग जोड़ना चाहता हूं वह एक int है। आप C++ में निर्मित प्रकारों से प्राप्त नहीं कर सकते हैं (क्या आप?)
मेरा प्रश्न यह है कि मूल प्रकार (int, float, double, आदि) से प्राप्त करने का एक चालाक तरीका है या नहीं।
समाधान है कि प्रभावी रूप से एक पूर्णांक है एक नया वर्ग को परिभाषित करने में हो सकता है .. यह को परिभाषित करता है हर आपरेशन किसी पूर्णांक कर सकते हैं और बस के लिए एक निजी पूर्णांक डेटा सदस्य है कि आपरेशन लागू होता है। यह रणनीति काम करेगी, लेकिन शायद अन्य पहले से ही इस तरह की कक्षा बना चुके हैं और मैं सिर्फ "fakeint.h" हेडर फ़ाइल परिभाषा का उपयोग कर सकता हूं। क्या ऐसा कोई "प्रॉक्सी देशी वर्ग रैपर" टाइप परिभाषाएं पहले से ही उपलब्ध हैं, इससे पहले कि मैं उन्हें स्वयं लागू कर सकूं?
मुझे एहसास है कि मेरे प्रॉक्सी इंट को इंट के साथ एक दूसरे के साथ अंतःक्रियात्मक रूप से उपयोग नहीं किया जा सकता है, खासकर जब मौजूदा फ़ंक्शन परिभाषाएं सभी int की अपेक्षा करती हैं .. लेकिन मेरे ऐप के लिए, यह सब एक आंतरिक लूप में है जो बहुत सरल कर रहा है मूल + - *^= संचालन, फ़ंक्शन तर्क या कुछ भी के रूप में उपयोग नहीं किया जाता है।
आपको बूस्ट के ऑपरेटरों में देखना चाहिए: http://www.boost.org/doc/libs/1_39_0/libs/utility/operators.htm। यह आपको एक कक्षा बनाने देगा जिससे सभी सामान्य ऑपरेटर इसे मूल पूर्णांक प्रकार की तरह कार्य कर सकें। –
@Evan .. धन्यवाद, यह सामान्य रूप से एक अच्छा संसाधन है! मुझे जो चाहिए वह ओवरकिल लेकिन अगर मुझे अपना खुद का रोल करने की ज़रूरत है तो यह अनावश्यक काम को काफी हद तक कम कर देगा। – SPWorley