मैंने हाल ही में boost::program_options
का उपयोग करना शुरू कर दिया है और इसे अत्यधिक सुविधाजनक पाया है। उस ने कहा, एक बात याद आ रही है कि मैं खुद को एक अच्छे तरीके से कोड करने में असमर्थ था:boost :: program_options: सभी विकल्पों को फिर से प्रिंट करना और प्रिंट करना
मैं स्क्रीन पर आउटपुट करने के लिए boost::program_options::variables_map
में एकत्र किए गए सभी विकल्पों पर पुन: प्रयास करना चाहता हूं। यह एक सुविधाजनक फ़ंक्शन बनना चाहिए, जब मैं नए विकल्प जोड़ता हूं या प्रत्येक प्रोग्राम के लिए फ़ंक्शन को अपडेट करने की आवश्यकता के बिना सेट किए गए सभी विकल्पों को सूचीबद्ध करने के लिए बस कॉल कर सकता हूं।
मुझे पता है कि मैं व्यक्तिगत विकल्पों की जांच और आउटपुट कर सकता हूं, लेकिन ऊपर बताए अनुसार, यह एक सामान्य समाधान बनना चाहिए जो वास्तविक विकल्पों के लिए अनजान है। मैं आगे जानता हूं कि मैं variables_map
की सामग्री पर पुन: प्रयास कर सकता हूं क्योंकि यह केवल std::map
है। मैं तब संग्रहित boost::any
परिवर्तनीय में शामिल प्रकार के प्रकार की जांच कर सकता हूं और इसे उचित प्रकार में परिवर्तित करने के लिए .as<>
का उपयोग कर सकता हूं। लेकिन इसका मतलब यह होगा कि प्रत्येक प्रकार के लिए एक केस के साथ एक लंबे स्विच ब्लॉक को कोडिंग करना होगा। और यह मेरे लिए अच्छी कोडिंग शैली की तरह नहीं दिखता है।
तो सवाल यह है कि क्या इन विकल्पों पर पुन: प्रयास करने और उन्हें आउटपुट करने का एक बेहतर तरीका है?
लिंक और RTTI के बारे में विचार करने के लिए धन्यवाद । मैं उम्मीद कर रहा था कि मैं सभी समर्थित प्रकारों के लिए एक संरचना बनाने से रोक सकता हूं जो कि प्रकारों में वृद्धि होने पर मुझे प्रबंधित करना होगा, लेकिन ऐसा लगता है कि यह संभव नहीं होगा। असल में, मैं इस प्रकार के हिरण को पास करना चाहता था - जैसे कि वे 'ऑपरेटर <<' का समर्थन करते हैं, सब कुछ ठीक काम करता है, अन्यथा संकलन विफल होना चाहिए। – shiin