मुझे एक समस्या है जो उस कोड में काफी आम है जिसे मैं इस समय लिख रहा हूं जिससे मैं एक पूर्णांक प्राप्त करना चाहता हूं जो केवल एक निश्चित सीमा के भीतर मौजूद हो जहां सीमा [प्रारंभ, अंत) हो। असल में मैं निम्नलिखित की तरह कुछ करने में सक्षम होना चाहता हूं:क्या सी ++ में मानक साइक्लिक इंटीजर क्लास है?
cyclic_int ci(4, 8);
ci = 4;
assert(ci == 4);
ci += 3;
assert(ci == 7);
ci += 2;
assert(ci == 5);
assert(ci == 13);
और यह सब सच हो जाना चाहिए। मूल रूप से कक्षा स्वचालित रूप से मेरे लिए मॉड्यूलस (%) लागू करती है और पूर्णांक उस श्रेणी में चक्रीय पूर्णांक के रूप में कार्य करता है जिसे मैंने इसमें शामिल किया है। मैं इस कक्षा को अपने आप कार्यान्वित कर सकता हूं और सभी सामान्य ऑपरेटरों को अधिभारित कर सकता हूं ताकि यह सामान्य पूर्णांक के साथ अच्छी तरह से काम कर सके लेकिन यह एक उपयोगी वर्ग की तरह लगता है जिसे किसी ने पहले बनाया हो।
तो मेरा सवाल यह है कि, क्या वहां कहीं ऐसा एक सामान्य वर्ग है जहां हर कोई इसका उपयोग करता है या मैं इसे गलत तरीके से करने के बारे में सोच रहा हूं और क्या यह एक बेहतर तरीका है। (मेरा लक्ष्य है कि% ऑपरेटर या उस पर किसी भी समान कार्य को लागू करने के बारे में लगातार विचार न करें) धन्यवाद।
संपादित करें: http://github.com/robertmassaioli/wrapping_number
पर जहाँ तक है जैसा कि मुझे पता है कि इस तरह की चीज़ के लिए कोई "उद्योग-मानक" नहीं है - बूस्ट लाइब्रेरी की तरह, यदि आपका यही मतलब है। लेकिन जैसा कि आपने कहा था, इस तरह के वर्ग को लागू करने और सभी आवश्यक ऑपरेटरों को अधिभारित करने के लिए पर्याप्त आसान होना चाहिए। –
किसी उत्तर के बजाए टिप्पणी का उपयोग करना क्योंकि 1) मैंने इसका कभी भी उपयोग नहीं किया और 2) यह अभी तक एक आधिकारिक बूस्ट लाइब्रेरी नहीं है लेकिन: बूस्ट। कॉन्स्ट्रेनेड वैल्यू में एक "रैपिंग_इन्ट" है जो आप जो खोज रहे हैं उसके समान दिखता है: http: //student.agh.edu.pl/~kawulak/constrained_value/constrained_value/tutorial.html#constrained_value.tutorial.other_error_policies_for_bounded_objects –
@Eric: यही वही है जो मैं खोज रहा था लेकिन यह अभी तक बूस्ट लाइब्रेरीज़ से अलग नहीं है। मैंने चारों ओर देखने की कोशिश की और संदर्भ कार्यान्वयन नहीं मिला। मैं देखता रहूंगा लेकिन क्या आप जानते हैं कि कोई कहां है? –