मेरी कक्षा में मैं दो निजी सदस्य:मैं एक वर्तमान इटरेटर मूल्य के लिए सूचक मिल सकता है
std::list<MyObject> objects;
MyObject *selecteObj;
कोई घटना होती है जब मैं सूची के माध्यम से पुनरावृति और परीक्षण के कुछ प्रकार को चलाने के लिए है कि होगा चाहते हैं केवल सूची में से किसी एक आइटम पर सच साबित होता है। मैं उस आइटम पर कहीं और उपयोग के लिए एक सूचक को सहेजना चाहता हूं।
std::list<MyObject>::iterator i;
for (i = objects.begin(); i!=objects.end(); ++i){
if (i->test())
selectedObj = i;
}
कहीं और किसी अन्य विधि
if (selectedObj !=null)
tmpObj->doSomething();
में हालांकि यह काम नहीं करता क्योंकि i
एक सूचक नहीं है, इसकी एक इटरेटर भले ही आप यह एक MyObject
के लिए सूचक की तरह व्यवहार कर सकते हैं।
क्या पॉइंटर को फिर से प्राप्त करना संभव है कि इटरेटर अन्यत्र उपयोग के लिए आंतरिक रूप से संग्रहीत कर रहा है?
क्या मैं इस गलत तरीके से सोच रहा हूं?
जो मैं करने की कोशिश कर रहा हूं उसे पूरा करने का सही तरीका क्या है?
निश्चित रूप से आपका मतलब है 'std :: addressof (* i)', है ना? ओपी ने नहीं पूछा कि ऑब्जेक्ट के 'एंड' ऑपरेटर को कैसे बुलाया जाए ... –
@ केरेकस्क: मुझे लगता है, आपका मतलब था 'std :: addressof' ('std :: address_of' के बजाय), है ना? : पी – Nawaz
@ नवाज: ओह, मैंने क्या कहा *? ;-) –