Returning reference to a pointer- C++ -


निम्नलिखित वर्ग पर विचार करें।

  वर्ग मैपिंग_इटम्स {public: mapping_items () {} शून्य जोड़ (कॉन्स्ट मैपिंग_आईटेम * आइटम) {items_.push_back (आइटम); } Size_t count () const {रिटर्न आइटम_आकार (); } कॉन्फ़ मैपिंग_आईटेम & amp; खोज (const std :: string और pattern) {const mapping_item * item = // पुनरावृत्त वेक्टर और आइटम ढूंढें; वस्तु वापस; } निजी: मैपिंग_आइटम्स (कॉन्स्ट मॅपिंग_इटम & amp;); // अनुमति नहीं mapping_items & amp; ऑपरेटर = (कॉन्फ़ मैपिंग_आईटेम्स & amp;;); // अनुमति नहीं std :: vector & lt; const मैपिंग_आईटेम * & gt; items_; };  

सी ++ अकसर पूछे जाने वाले प्रश्न कहते हैं,

जब आप कर सकते हैं संदर्भों का उपयोग करें, और जब आपके पास संकेत मिलता है।

ऊपर दिए गए उदाहरण में, क्या मुझे const mapping_item & amp; या const mapping_item * ?

वापस कारण <+> मैपिंग_आईटेम & amp; इसलिए है क्योंकि हमेशा एक डिफ़ॉल्ट रिटर्न मूल्य उपलब्ध होगा मैं कभी रिक्त रिटर्न नहीं होगा इसलिए एक संदर्भ यह स्पष्ट करता है कि इसमें नल नहीं हो सकता है। क्या यह सही डिजाइन है?

एक समस्या है - यदि आपका पता () फ़ंक्शन विफल रहता है तो क्या होता है? अगर ऐसा होने की उम्मीद नहीं की जाती है, तो आप ठीक एक संदर्भ वापस कर रहे हैं (और यह एक अपवाद बढ़ाएं यदि यह तथ्य नहीं है के बावजूद होता है)। यदि दूसरी तरफ यह हो सकता है (जैसे कि पता पुस्तिका में कोई नाम दिखाना), तो आपको एक पॉइंटर लौटने पर विचार करना चाहिए, क्योंकि एक संकेतक नल हो सकता है, यह इंगित करता है कि असफल रहा।


Comments

Popular posts from this blog

objective c - iPhone and it's wireless area -

unix - Listing all shared memory segments used by a process on AIX5.3+ -

tsql - Correct sql/hql query (aggregate in where clause) -