शायद मैं एक ही समारोह के नाम और मानकों के साथ दो इंटरफेस है, लेकिन अलग अलग वापसी मूल्यों के साथ:सी ++ विभिन्न रिटर्न प्रकारों के साथ इंटरफेस से एकाधिक विरासत कैसे प्राप्त करें?
struct A { virtual void foo() = 0; };
struct B { virtual int foo() = 0; };
कैसे क्लास सी परिभाषित करने के लिए, कि यह इंटरफेस विरासत (अगर यह पाठ्यक्रम संभव की है)? उदाहरण के लिए मैं कुछ स्यूडोकोड कि संकलित नहीं है लिखें:
// this code is fake, it doesn't compiled!!
struct C : A, B
{
// how to tell compiler what method using if referenced from C?
using void foo(); // incorrect in VS 2012
// and override A::foo() and B::foo()?
virtual void foo() { std::cout << "void C::foo();\n"; } // incorrect
virtual int foo() { std::cout << "int C::foo();\n"; return 0; } // incorrect
}
// ... for use in code
C c;
A &a = c;
B &b = c;
c.foo(); // call void C::foo() when reference from C instance
a.foo(); // call void C::foo() when reference from A instance
b.foo(); // call int C::foo() when reference from B instance
आप ऐसा कुछ क्यों चाहते हैं? –
शायद उसके पास ए और बी नहीं है; लेकिन सी को बनाना है जो दोनों लागू करता है। एक उचित प्रश्न लगता है – pm100
सी ++ में यह संभव नहीं है (जैसा कि आपने इसे कोड नहीं किया है)। कार्यों को उनके पैरामीटर प्रकारों द्वारा पहचाना जाता है, न कि उनके रिटर्न प्रकारों से। –