2012-03-08 9 views
11

मैं Standard C++ IOStreams and Locales में वर्णित के रूप iostreams के लिए एक कॉल-बैक समारोह रजिस्टर करने के लिए, पी register_callback() उपयोग कर रहा हूँ। 202.register_callback() के माध्यम से पंजीकृत कॉलबैक को अनधिकृत करना?

हालांकि, न तो यह और न ही कोई दस्तावेज मुझे मिल सकता है कि कोई कॉल-बैक को अपंजीकृत कैसे कर सकता है। क्या यह संभव है? अगर मैं उपयोग कर रहा हूं Iword/pword को शून्य-आउट करना था, तो भी पंजीकरण करना आवश्यक नहीं है?

+3

+1 कुछ ऐसा करने का प्रयास करने के लिए जो मुझे पता नहीं था। – Nawaz

+2

बहादुर। सभी उन्नत iostream सामान मूल रूप से uncharged क्षेत्र है। इस विषय पर एक भी किताब है, लेकिन लेखकों के अलावा कुछ अन्य लोग वास्तव में नटदार किरदार विवरण में खो गए हैं। – jalf

+1

@jalf: ऐसा इसलिए हो सकता है क्योंकि IOstreams आमतौर पर चूसते हैं। :) वे शक्तिशाली और वास्तव में विस्तार योग्य हो सकते हैं, लेकिन वे शांत और जटिल हैं। अफसोस की बात है, एक नई I/O शैली/पुस्तकालय के संबंध में कोई आंदोलन प्रतीत नहीं होता है। – Xeo

उत्तर

8

रजिस्टर_callback फ़ंक्शन किसी विशिष्ट स्ट्रीम ऑब्जेक्ट के लिए आपके कॉलबैक को पंजीकृत करता है। पंजीकरण से छुटकारा पाने का तरीका धारा को दायरे से बाहर जाने देना है।

आप धारा के जीवन का सिर्फ एक हिस्सा के लिए अपने काम करने के लिए अपने कॉलबैक की जरूरत है, तो आप कॉलबैक के साथ उस स्थिति की दुकान है और यह कुछ भी नहीं कर सकते हैं।

क्लियरिंग iword/pword (सिवाय यह कुछ भी नहीं करना कॉलबैक के लिए एक संकेत हो सकता है कि) मदद नहीं करता है, और वहाँ पंजीकरण रद्द करने के लिए कोई रास्ता नहीं है।

+0

विकल्प # 1 (स्कोप से बाहर निकलने वाली धारा) कोउट जैसे स्ट्रीम के लिए एक विकल्प नहीं है। विकल्प # 2 (कॉलबैक के साथ एक शर्त भंडारण) समस्याग्रस्त लगता है क्योंकि यह सिर्फ एक सामान्य कार्य है, न कि एक मजेदार वस्तु है, इसलिए अतिरिक्त जानकारी स्टोर करने के लिए वास्तव में कोई अच्छी जगह नहीं है। (एक ही कॉलबैक का उपयोग कई धाराओं द्वारा किया जा सकता है।) विकल्प # 3 (Iword/pword साफ़ करना) अब मैं कर रहा हूं। मैं बस देखना चाहता था कि कुछ बेहतर था या नहीं। –

संबंधित मुद्दे