से किसी ऑब्जेक्ट का रिटर्न संदर्भ मैं एक वेक्टर से किसी ऑब्जेक्ट का संदर्भ वापस करना चाहता हूं, और ऑब्जेक्ट एक इटरेटर ऑब्जेक्ट में है। मैं उसे कैसे कर सकता हूँ?किसी ऑब्जेरेटर
मैं निम्नलिखित की कोशिश की:
Customer& CustomerDB::getCustomerById (const string& id) {
vector<Customer>::iterator i;
for (i = customerList.begin(); i != customerList.end() && !(i->getId() == id); ++i);
if (i != customerList.end())
return *i; // is this correct?
else
return 0; // getting error here, cant return 0 as reference they say
}
कोड में, customerList ग्राहकों के एक वेक्टर, और समारोह getId ग्राहक की आईडी रिटर्न है।
*i
सही है? और मैं संदर्भ के रूप में 0 या शून्य कैसे कर सकता हूं?
वैकल्पिक रूप से, वह एक सूचक वापस कर सकता है। 'वापसी i! = CustomerList.end() की लाइनों के साथ कुछ भी? और * मैं: पूर्ण; '। –
कुछ iffy कास्टिंग के साथ एक शून्य संदर्भ बनाने के लिए बस संभव है, लेकिन एक * वास्तव में * बुरा विचार, और संभवतः लगभग हर संभव परिस्थिति में यूबी की संभावना है। – BoBTFish
हाँ, यह फ़ंक्शन के अपेक्षित उपयोग पर बहुत निर्भर करता है। यदि कार्य को कॉल करते समय प्रारंभिक उम्मीद यह है कि ग्राहक मौजूद होना चाहिए, तो अपवाद फेंकना समझ में आता है। यदि इसका उद्देश्य यह पूछने के लिए अधिक है कि "क्या ग्राहक मौजूद है, और यदि ऐसा होता है, तो ग्राहक को वापस करें", फिर एक निरर्थक प्रकार लौटने से अधिक समझदारी मिलती है। –