संपादित करें: मैं सी ++ के साथ काम कर रहा हूँ।सबसे खूबसूरत तरीका के आसपास इस बहुरूपता अंक प्राप्त करने
तो, मैं तरीकों/कार्य बनाने रहा आकृतियों के बीच चौराहे परीक्षण करने के लिए।
class Shape {};
class Rectangle : public Shape {};
class Circle : public Shape {};
class Line : public Shape {};
अब मैं सबसे अच्छा तरीका चौराहे परीक्षण करने के लिए वास्तविक तरीकों/कार्य लिखने के लिए फैसला करने की जरूरत है,: मैं अनिवार्य रूप से यह किया है। लेकिन मेरे सभी आकृति आकार संकेत की एक सूची में संग्रहीत किया जाएगा, तो मैं मूल रूप की एक विधि/समारोह बुला कर दिया जाएगा:
bool intersects (Shape* a, Shape* b);
उस बिंदु पर, मैं यह निर्धारित करने की जरूरत है जो आकार 'एक' के प्रकार और 'बी' हैं, इसलिए मैं टकराव का सही ढंग से पता लगा सकता हूं। मैं आसानी से, उनमें से एक कर सकते हैं बस कुछ आभासी तरीकों का उपयोग करके:
कि आकार में से एक निर्धारित करेंगे ('एक' अब है 'इस')। हालांकि, मुझे अभी भी 'बी' के प्रकार की आवश्यकता होगी। स्पष्ट समाधान आकार को 'आईडी' चर देने के लिए आकार देने के लिए है, और फिर उन लोगों के माध्यम से 'स्विच' करें, और फिर गतिशील_कास्ट का उपयोग करें। हालांकि, यह बहुत ही सुरुचिपूर्ण नहीं है, और ऐसा लगता है कि ऐसा करने के लिए एक और ओओ तरीका होना चाहिए।
कोई सुझाव?
यह क्लासिक समस्या है जिसे डबल-प्रेषण द्वारा हल किया जाता है। – Mankarse
हालांकि मेरी मूल खोज कभी-कभी डबल-प्रेषण के साथ दिखाई नहीं दे रही है, लेकिन मैं देखता हूं कि यह मेरी समस्या का समाधान कैसे करता है। धन्यवाद। संपादित करें: मैं इसे अप-वोट दूंगा, लेकिन मुझे यकीन नहीं है कि मेरे पास पर्याप्त प्रतिष्ठा नहीं है, या मुझे अप-वोट बटन नहीं मिल रहा है। –