मैं सिर्फ कोड के इस टुकड़े की कोशिश की है:एकाधिक वंशानुक्रम: 2Classes1Method
struct FaceOfPast
{
virtual void Smile() = 0;
};
struct FaceOfFuture
{
virtual void Smile() = 0;
};
struct Janus : public FaceOfPast, public FaceOfFuture
{
virtual void Smile() {printf(":) ");}
};
...
void main()
{
Janus* j = new Janus();
FaceOfFuture* future = j;
FaceOfPast* past = j;
future->Smile();
past->Smile();
delete j;
}
यह इरादा (आउटपुट दो स्माइली चेहरे) के रूप में काम करता है, लेकिन मुझे नहीं पता लगता है कि इसे संकलित करना चाहिए, Smile()
Janus
में संदिग्ध होने के पुनर्विक्रय।
यह कैसे (और क्यों) काम करता है?
प्रश्न कॉलिंग भाग के बारे में प्रतीत नहीं होता है, लेकिन पुनर्वितरण भाग: आप एक ही विधि को लिखकर 2 अलग-अलग वर्गों से 2 वर्चुअल विधियों को फिर से परिभाषित क्यों कर सकते हैं? – alexisdm