मेरे पास पशु नामक आधार वर्ग है, और एक कुत्ता और एक बिल्ली जो पशु से प्राप्त होती है। और कुत्ते और बिल्ली से कुत्ते की बिल्ली, में कुत्ते के नाम से जाने वाली एक बहुराष्ट्रीय कक्षा जिसे मैंने नींद कहा है। जब मैं डॉगकैट से उस विधि का उपयोग करना चाहता हूं, तो मुझे त्रुटि मिलती है "डॉग कैट :: नींद" संदिग्ध है, मैं समस्या को समझता हूं, लेकिन मैंने एक पुस्तक में पढ़ा है कि यह संभव होना चाहिए, जब आप नींद को आभासी घोषित करते हैं - लेकिन यह काम नहीं करता।बहुसंख्यक के लिए संदिग्ध कामकाज?
क्या यह संभव नहीं है कि पुस्तक गलत है या कोई कामकाज है?
class Animal
{
public:
Animal(){}
virtual void sleep()
{
cout << "zzzzzzzzz" << endl;
}
virtual void eat() = 0;
};
class Dog: public Animal
{
protected:
Dog(){}
virtual void eat() override
{
cout << "eats dogfood" << endl;
}
};
class Cat :public Animal
{
public:
Cat(){}
virtual void eat() override
{
cout << "eats catfood" << endl;
}
};
class DogCat : public Dog, public Cat
{
public:
DogCat(){}
using Dog::eat;
};
int main(int argc, char** argv) {
DogCat *DC = new DogCat();
DC->sleep();//Error
}
आप कितने प्रकार के जानवरों को जानते हैं कि बिल्ली और कुत्ते दोनों हैं? – Peter
आईएमएचओ हीरा की समस्या के अधिकांश मामलों में खराब वर्ग डिजाइन का संकेत मिलता है। और आपका मामला निश्चित रूप से उस श्रेणी में पड़ता है। – user463035818