आप इसे वर्तमान सी ++ में कर सकते हैं। आप टेम्पलेट मानकों का एक "बड़ा पर्याप्त" नंबर देते हैं, और आप उन्हें चूक दे:
class nothing1 {};
class nothing2 {};
class nothing3 {};
template <class T1 = nothing1, class T2 = nothing2, class T3 = nothing3>
class X : public T1, public T2, public T3 {};
या आप और अधिक परिष्कृत और उपयोग प्रत्यावर्तन मिल सकती है। सबसे पहले आप टेम्पलेट आगे की घोषणा:
class nothing {};
template <class T1 = nothing, class T2 = nothing, class T3 = nothing>
class X;
तो फिर तुम इस मामले में जहां सभी मापदंडों डिफ़ॉल्ट हैं के लिए विशेषज्ञ:
template <>
class X<nothing, nothing, nothing> {};
तो फिर तुम ठीक से सामान्य टेम्पलेट को परिभाषित (पहले आप केवल आगे है जो -declared):
template <class T1, class T2, class T3>
class X : public T1, public X<T2, T3>
सूचना कैसे आधार वर्ग में, आप एक्स के वारिस, लेकिन आप पहले पैरामीटर याद आती है। तो वे सभी एक ही स्थान पर स्लाइड करते हैं। आखिरकार वे सभी डिफ़ॉल्ट होंगे, और विशेषज्ञता में लाएगा, जो किसी भी चीज का वारिस नहीं करता है, इस प्रकार रिकर्सन को समाप्त कर देता है।
अद्यतन: सिर्फ एक अजीब लग रहा है मैं इस से पहले की तरह कुछ तैनात था, and guess what...
आप भी सिर्फ एक "कुछ नहीं" वर्ग – sellibitze
@sellibitze इस्तेमाल कर सकते हैं - मैं में उपयोग के लिए सिर्फ एक "कुछ नहीं" वर्ग का उपयोग रिकर्सिव संस्करण। आप गैर-रिकर्सिव संस्करण में डिफ़ॉल्ट के लिए एक ही कक्षा का उपयोग नहीं कर सकते हैं, क्योंकि आपको "कुछ भी पहले से ही प्रत्यक्ष आधार वर्ग" त्रुटियां नहीं मिलेंगी। –
मुझे समझ में नहीं आ रहा है: एक्स से विरासत में पहली पैरामीटर क्यों छोड़ते हैं? – Gili