कई समस्याओं के साथ कई समस्याएं हैं जब इसका उपयोग पूर्ण विकसित वर्गों के साथ किया जाता है, लेकिन वे सभी अस्पष्टता के चारों ओर घूमते हैं ।
अस्पष्टता कुछ अलग तरीकों से दिखाई देती है:
- यदि आपके पास एक ही क्षेत्र के साथ दो आधार कक्षाएं हैं
x
, और व्युत्पन्न प्रकार पूछते हैं x
, तो यह क्या मिलता है?
- यदि दो
x
चर में असंगत प्रकार हैं, तो आप इसका अनुमान लगा सकते हैं।
- यदि वे एक ही प्रकार के हैं, तो आप उन्हें एक ही चर में मिलाने का प्रयास कर सकते हैं।
- आप हमेशा उन्हें अजीब तरह से योग्य नामों के रूप में उजागर कर सकते थे।
- यदि आपके पास
f
समान हस्ताक्षर वाले समान फ़ंक्शन के साथ दो आधार कक्षाएं हैं , और कोई कॉल करता है f
, जिसे कहा जाता है?
- क्या होगा अगर दो आधार वर्ग एक अन्य सामान्य आभासी पूर्वज (हीरे की समस्या) को साझा करते हैं।
- क्या होगा यदि फ़ंक्शन में भिन्न, लेकिन संगत हस्ताक्षर हैं?
- जब आप दो बेस क्लास के साथ एक क्लास का निर्माण करते हैं, तो बेस क्लास के किस कंस्ट्रक्टर को पहले कहा जाता है? जब आप उस वस्तु को नष्ट करते हैं, जो मारा जाता है?
- जब आप ऑब्जेक्ट को मेमोरी में रखते हैं, तो आप इसे लगातार कैसे करते हैं?
- 3 बेस कक्षाओं के साथ आप इन सभी मामलों को कैसे संभालते हैं? 10?
और जो डायनेमिक प्रेषण, टाइप इंट्रेंस, पैटर्न मिलान और अन्य चीजों की अनदेखी करता है, जिनके बारे में मुझे कम पता है, जो तब और अधिक चुनौतीपूर्ण हो जाती है जब भाषा पूर्ण वर्गों के कई उत्तराधिकार का समर्थन करती है।
लक्षण या मिक्स-इन (या इंटरफेस, या ...) सभी निर्माण हैं जो विशेष रूप से एक प्रकार की क्षमताओं को सीमित करते हैं ताकि कोई अस्पष्टता न हो। वे शायद ही कभी खुद कुछ भी करते हैं। यह प्रकारों की संरचना को चिकनी बनाने की अनुमति देता है क्योंकि दो चर या दो कार्य नहीं हैं ... एक चर और एक संदर्भ है; एक समारोह और एक हस्ताक्षर। कंपाइलर जानता है कि क्या करना है।
लिया गया अन्य सामान्य तरीका उपयोगकर्ता को एक समय में उनके प्रकार को "बनाने" (या मिश्रण करने) के लिए मजबूर करना है। आधार वर्गों के बजाय नए प्रकार में समान भागीदार होने के कारण, आप एक प्रकार को दूसरे में जोड़ते हैं - जो कुछ भी वहाँ था (आमतौर पर वैकल्पिक सिंटैक्स के साथ फिर से नाम और / या ओवरराइड बिट्स को फिर से उजागर करने के लिए)।
क्या ऐसी कोई चीज़ है जो मिश्रणों / लक्षणों के साथ संभव नहीं है लेकिन C ++ शैली बहु विरासत के साथ संभव है?
भाषा के आधार पर - यह आम तौर पर कई आधार वर्गों से चर के लिए कार्यों और भंडारण के कार्यान्वयन को मर्ज करने या उन्हें व्युत्पन्न प्रकार में उजागर करने के लिए परेशानी या असंभव हो जाता है ।
क्या उनके साथ हीरे की समस्या में भागना संभव है?
कभी-कभी कम गंभीर विविधताएं आपकी भाषा के आधार पर पॉप अप करेंगी, लेकिन आमतौर पर नहीं। लक्षण के पूरे बिंदु को उस तरह की अस्पष्टता को तोड़ना है।