मैं इस कोड की कोशिश की के साथ कई आधार वर्ग से विरासत:सी ++ एक ही वर्चुअल समारोह नाम
class A
{
virtual void foo() = 0;
};
class B
{
virtual void foo() = 0;
};
class C : public A, public B
{
//virtual void A::foo(){}
//virtual void B::foo(){}
virtual void A::foo();
virtual void B::foo();
};
void C::A::foo(){}
void C::B::foo(){}
int main()
{
C c;
return 0;
}
यह ठीक है जब टिप्पणी की भाग का उपयोग कर, लेकिन जब मैं कक्षा घोषणा के बाहर परिभाषाओं लिखने की कोशिश, संकलक रिपोर्ट त्रुटियों। मैं MSVC11 संकलक उपयोग कर रहा हूँ, किसी को पता है कि यह कैसे लिखने के लिए? मुझे कोड को cpp फ़ाइल में ले जाने की आवश्यकता है।
आप ~~
टिप्पणी की भाग भी जीसीसी में काम नहीं कर रहा:
A::foo
के लिए दो अलग-अलग ओवरराइड और विरासत की एक और परत शुरू करने से अन्य की तुलना में अलग व्यवहार के साथB::foo
के लिए कोई तरीका नहीं है। –यह बिल्कुल समझ में नहीं आता है। यह सिर्फ 'वर्चुअल शून्य foo();', और बस * एक बार * होना चाहिए। –
कैसे आप _use_ को 'A',' b' और 'C' चाहते हो? वहाँ कई संभावनाएं हैं: [उदाहरण 1] (http://ideone.com/KlVTgv), [उदाहरण 2] (http: // ideone।कॉम/आर 2 एसईटीज़), ... (जो संभवतः आवश्यक से अधिक कार्यों को परिभाषित करते हैं) –