यदि आप वास्तव में वंश को ट्रैक करने और प्रकारों के माध्यम से गणना करने में सक्षम होना चाहते हैं तो आप Loki टाइपलिस्ट देख सकते हैं। मुझे यकीन नहीं है कि आप जो मांग रहे हैं वह वास्तव में काम के गुच्छा के बिना संभव है। सुनिश्चित करें कि आप यहां अति-इंजीनियरिंग नहीं हैं।
एक अलग टिप्पणी पर, आप इस तरीके से एमआई उपयोग करने के लिए जा रहे हैं (जैसे कि, खतरनाक हीरा), तो आप बहुत स्पष्ट जो आभासी सदस्य के बारे में आप चाहते हैं होना चाहिए। मैं D
लिखते समय स्पष्ट रूप से निर्णय लेने के बिना C::fn()
से B::fn()
पर सेमेन्टिक्स चुनना चाहता हूं, जहां आप एक अच्छे मामले के बारे में सोच नहीं सकते। अलग-अलग विधि के आधार पर आप शायद दूसरे (या यहां तक कि दोनों) पर एक चुन लेंगे। एक बार निर्णय लेने के बाद, आवश्यकता यह है कि विरासत में परिवर्तन उम्मीदों या अर्थपूर्ण इंटरफ़ेस को नहीं बदलते हैं।
आप एक नया वर्ग में अदला-बदली के बारे में वास्तव में चिंतित हैं, तो B
कहना की जगह है जहाँ E
B
से उतरना नहीं है, लेकिन एक ही इंटरफ़ेस प्रदान करता है में कहते हैं कि E
, तो आप वास्तव में टेम्पलेट दृष्टिकोण हालांकि मैं यकीन नहीं है का उपयोग करना चाहिए यही कारण है कि में एक static_cast<>
है ...
struct A {
virtual ~A() {}
virtual void f() = 0;
};
struct B: A {
virtual void f() { std::cout << "B::f()" << std::endl; }
};
struct C: A {
virtual void f() { std::cout << "C::f()" << std::endl; }
};
template <typename Base1, typename Base2>
struct D: Base1, Base2 {
void g() { Base1::f(); Base2::f(); }
};
int main() {
D<B,C> d1;
D<C,B> d2;
d1.g();
d2.g();
return 0;
}
// Outputs:
// B::f()
// C::f()
// C::f()
// B::f()
ठीक काम करता है और एक छोटे से को देखने के लिए आसान लगता है।
स्रोत
2009-03-05 21:01:54
मुझे कोई प्रश्न नहीं मिला जो इस विशिष्ट मुद्दे का उत्तर दे। क्या आप? – shoosh
ऐसा इसलिए नहीं है क्योंकि यह एकाधिक विरासत के बारे में है जिसे आप अनुमान लगा सकते हैं कि इसे पहले से ही अन्य पदों में संबोधित किया गया था। उनसे पूछा गया है कि 'मैं जो करने की कोशिश कर रहा हूं वह है कि डी को किसी भी तरह से अपने पूर्वजों में एफएन() के सभी उदाहरणों का आकलन करें। क्या यह किसी अन्य माध्यम से संभव है कि आभासी कार्य? '।हालांकि मुझे लगता है कि यह कुछ हद तक बेवकूफ सवाल था, लेकिन यहां से जुड़े प्रश्नों में से कोई भी ऐसी चीज के बारे में बात नहीं करता है। मुझे लगता है कि वह अपने पूछताछ में बहुत विशिष्ट और अद्वितीय था। -1। –