यह उत्पन्न करने वाला परिदृश्य काफी जटिल है इसलिए मैं कुछ टुकड़े निकाल दूंगा और शामिल वर्गों का सटीक प्रतिनिधित्व दूंगा।सी ++ एकाधिक विरासत प्रश्न
/* This is inherited using SI by many classes, as normal */
class IBase
{
virtual string toString()=0;
};
/* Base2 can't inherit IBase due to other methods on IBase which aren't appropriate */
class Base2
{
string toString()
{
...
}
};
/* a special class, is this valid? */
class Class1 : public IBase, public Base2
{
};
तो, क्या यह मान्य है? ToString पर संघर्ष होगा? या कक्षा 1 आईबीएएस को संतुष्ट करने के लिए बेस 2 :: टूस्ट्रिंग का उपयोग कर सकते हैं? जैसा कि मैंने कहा है कि कई अन्य चीजें नहीं दिखायी गई हैं, इसलिए इस उदाहरण पर प्रमुख डिज़ाइन परिवर्तनों के सुझाव शायद उपयोगी नहीं हैं ... हालांकि किसी भी सामान्य सुझाव/सलाह का स्वागत है।
मेरे अन्य विचार कुछ इस तरह था:
class Class1 : public IBase, public Base2
{
virtual string toString()
{
return Base2::toString();
}
};
यह बनाता है और लिंक है, लेकिन मुझे पता नहीं है अगर यह कीड़े छुप गई हैं।