मैं व्युत्पन्न वस्तुओं की ओर इशारा का एक वेक्टर उपयोगकर्ता (ताकि मुझे लगता है कि सही शब्द "है केवल क्रम में जाना जाता है) ::उपयोग व्युत्पन्न वर्ग
vector<Person *> vect;
द्वारा डालने के बीच तुलना करने के लिए व्युत्पन्न वर्ग पुरुष और महिला हैं मैं केवल महिला ऑब्जेक्ट का चयन करके इस बात का copyconstructor कॉल करने के लिए वेक्टर पर एक यात्रा बनाना चाहते मैंने सोचा था कि 3 समाधान:
- एक ध्वज का उपयोग करने के लिए;
- ।। टाइपिड
- का उपयोग करने के लिए महिला के डिफ़ॉल्ट कन्स्ट्रक्टर में कॉपी कन्स्ट्रक्टर को कॉल करने के लिए, इसलिए जब भी उपयोगकर्ता एक बनाता है, स्वचालित रूप से जुड़वां बना देता है।
मुझे कई तरह के व्युत्पन्न कक्षाओं के मामले में पहला विकल्प पसंद नहीं है। मुझे तीसरा विकल्प भी पसंद नहीं है क्योंकि रिश्ते की समस्या पैदा होगी (दुनिया हर महिला को जानता है लेकिन महिला दुनिया को नहीं जान सकती)। उदाहरण
typeid(vect.at(i))==typeid(Female)
इस अभिव्यक्ति सही है: तो मैं दूसरे विकल्प का उपयोग करना चाहिए? क्या समस्या को रेखांकित करने का कोई और तरीका है?
यह इस तरह एक उदाहरण के आधार पर सलाह देने के लिए मुश्किल है। इस मामले के लिए मैं बस ध्वज का उपयोग करने के लिए कहूंगा, क्योंकि लिंग एक व्यक्ति की विशेषता है। विरासत उस मॉडल के लिए एक मूर्ख तरीके की तरह लगता है। –
'टाइपिड (vect.at (i)) == टाइपिड (महिला) 'काम नहीं करेगा –
मैं @ आर। मार्टिन्होफर्नैंड्स से सहमत हूं, लेकिन यदि आप अभी भी एक गतिशील कलाकार की तुलना में बहुरूपता का प्रयास कर सकते हैं तो यहां उपयोगी हो सकता है। – L7ColWinters