की तुलना में मैं सी ++ में एक सी #-जैसी घटना प्रणाली को कार्यान्वित करने का प्रयास कर रहा हूं जिसमें tr1 फ़ंक्शन टेम्पलेट्स को ईवेंट को संभालने वाले फ़ंक्शन को संग्रहीत करने के लिए उपयोग किया जाता है।std :: tr1 :: function <> ऑब्जेक्ट्स
मैं इतना है कि कई श्रोताओं, इस घटना से जुड़ी किया जा सकता है एक वेक्टर बनाई यानी .:
vector< function<void (int)> > listenerList;
मैं सूची में से एक हैंडलर दूर करने के लिए एक श्रोता की घटनाओं प्राप्त करना बंद करने में सक्षम होना चाहते हैं।
तो, मैं इस सूची में प्रवेश कैसे प्राप्त कर सकता हूं जो किसी दिए गए श्रोता से मेल खाता है? क्या मैं परीक्षण कर सकता हूं कि सूची में 'फ़ंक्शन' ऑब्जेक्ट किसी विशेष फ़ंक्शन को संदर्भित करता है?
धन्यवाद!
संपादित करें: बूस्ट :: सिग्नल दृष्टिकोण में ध्यान देने के बाद, ऐसा लगता है कि यह शायद टोकन सिस्टम का उपयोग करके कार्यान्वित किया गया है क्योंकि आप में से कुछ ने सुझाव दिया है। Here's some info on this। एक पर्यवेक्षक एक घटना से संलग्न होने पर "कनेक्शन" ऑब्जेक्ट को बरकरार रखता है, और यदि आवश्यक हो तो यह कनेक्शन ऑब्जेक्ट डिस्कनेक्ट करने के लिए उपयोग किया जाता है। तो ऐसा लगता है कि आप बूस्ट का उपयोग करते हैं या tr1 के साथ अपना खुद का रोल करते हैं, मूलभूत सिद्धांत वही है। यानी यह थोड़ी बेकार होगी :)
आप अतिरिक्त जानकारी के साथ एक struct का उपयोग करने के लिए जा रहे हैं, तो आप के रूप में अच्छी functors हैश मान के रूप में GUID/जो कुछ भी रूप में हैश कुंजी की दुकान है, और हो सकता है। :-) –
आप फ़ैक्टर को हैश मानों के रूप में स्टोर नहीं कर सकते हैं। आप उनके साथ कुछ भी नहीं कर सकते हैं। उन्हें एक संरचना में लपेटना (यहां तक कि केवल मज़ेदार की एक तत्व संरचना) आपको कुछ भी करने की अनुमति देगा। यह जानबूझकर है कि कुछ काम किए बिना उनकी तुलना/ढीला/आदि नहीं किया जा सकता है। – hazzen