यह प्रश्न C++ बूस्ट प्रोग्राम_ऑप्शन लाइब्रेरी के बारे में है।बढ़ावा क्या है :: program_options :: सूचित करें() के लिए?
सभी ट्यूटोरियल बहुत स्पष्ट हैं कि मुझे अपने पूर्ण चर मानचित्र पर notify()
पर कॉल करना चाहिए, लेकिन मुझे यकीन नहीं है कि यह वास्तव में मेरे लिए क्या कर रहा है। इसे बाहर टिप्पणी करते हुए कोई असर लगते नहीं था और प्रलेखन ज्यादा विस्तार में जाने नहीं किया:
http://www.boost.org/doc/libs/1_47_0/doc/html/boost/program_options/notify.html
अन्य सूत्रों का कहना है कि यह "उपयोगकर्ता परिभाषित" कार्यों चलाता है। यदि हां, तो वे कार्य कैसे पंजीकृत हैं और वे क्या करते हैं? क्या वे अपवाद फेंक सकते हैं?
ओह, मैं यह अब देखना सूचक के बिना, आपके कोड कुछ इस तरह लग सकता है। आपको "अधिसूचना" की तलाश करनी है, अधिसूचित नहीं है। अधिसूचना कार्य मूल्य के आधारभूत संदर्भ के पीछे है, इसलिए इसे परिवर्तित नहीं किया जा सकता है? यदि विकल्प "खराब" है तो मुझे अपवाद फेंकने के अलावा आप इसके साथ बहुत कुछ नहीं देख सकते हैं। – olooney
@olooney: इरादा यह है कि आप जो भी विकल्प उस विकल्प के साथ करेंगे, वह ले लेंगे। उदाहरण के लिए, यदि आपके पास कोई विकल्प है जो खोज पथ को बदलता है, तो आपका नोटिफ़ायर फ़ंक्शन खोज पथ को संशोधित करेगा। जैसा कि मैंने अपने उत्तर में नोट किया है, आप अपने विकल्प पार्सिंग कोड में व्यक्तिगत रूप से प्रत्येक विकल्प को जांचकर और फिर कुछ कार्रवाई करके यह वही तर्क कर सकते हैं, लेकिन इसके परिणामस्वरूप एक लंबी प्रक्रियात्मक ब्लॉब हो सकती है जिसे पढ़ने या संशोधित करना मुश्किल होता है। –
निश्चित रूप से, लेकिन variable_map को म्यूट करने की क्षमता के बिना, एक पर्यावरण ऑब्जेक्ट में एक अपारदर्शी हैंडल पास करें, या मज़ेदार से जुड़ें (बूस्ट :: फ़ंक्शन का उपयोग करके), आप वास्तव में अपवादों और * वैश्विक * दुष्प्रभावों तक ही सीमित हैं। यह अभी भी काम करने वाली निर्देशिका को बदलने या वैश्विक "वर्बोज़" ध्वज सेट करने के लिए उपयोगी है, लेकिन नोटिफ़ायर में विकल्प पार्सिंग के बड़े हिस्से को स्थानांतरित करने के लिए यह सामान्य नहीं है। हालांकि मुझे निर्णय लेने से पहले इसे आजमाया जाना चाहिए, मैं बस यहां थियोरिज़िंग कर रहा हूं। – olooney