मेरे पास मूल श्रेणी होने के साथ विरासत श्रृंखला है। मैं एक क्लास टेम्पलेट लिखने में सक्षम होना चाहता हूं जो आधार को प्राप्त करता है और संभवतः एक और बेस-व्युत्पन्न कक्षा संभव है। मैं आभासी विरासत का उपयोग कर सकता था, लेकिन मुझे एक और समाधान मिला। मैं जानना चाहता हूं कि यह सामान्य/काफी/वैध वर्ग डिज़ाइन है:सी ++ ओओ डिज़ाइन: टेम्पलेट पैरामीटर का विरासत
एक क्लास टेम्पलेट लिखें जिसमें टेम्पलेट पैरामीटर वह वर्ग है जो इसे प्राप्त करता है, यानी इसे बेस या बेस-व्युत्पन्न क्लास होना चाहिए। कन्स्ट्रक्टर में मैं वास्तव में यह सुनिश्चित करने के लिए स्थिर आवेषण का उपयोग कर सकता हूं कि उपयोगकर्ता ने किसी भी अवैध वर्ग को टेम्पलेट पैरामीटर के रूप में उपयोग नहीं किया है।
यदि यह काम करता है, तो मेरे पास कभी भी आभासी विरासत की समस्या नहीं होगी ... सवाल यह है कि ऐसा करना ठीक है। मैंने इसे अन्य परियोजनाओं में कभी नहीं देखा, इसलिए मैं इसका उपयोग करने से पहले सुनिश्चित करना चाहता हूं।
संपादित:
class Base
{
};
class Derived : public Base
{
};
template <Class TheBase>
class MyDerived : public TheBase
{
};
अब मैं Base
या किसी Base
व्युत्पन्न वर्ग, उदा का उपयोग कर सकते हैं: बस सुनिश्चित करें कि मैं तुम्हें भ्रमित न करें होने के लिए, यहाँ कुछ कोड है Derived
, TheBase
पैरामीटर के रूप में।
क्या आप हमें कुछ कोड दिखा सकते हैं? मुझे लगता है कि यह बेहतर जवाब पाने में मदद करेगा। –
ईमानदारी से ऐसा लगता है कि आप [उत्सुकता से आवर्ती टेम्पलेट पैटर्न (सीआरटीपी)] (http://en.wikipedia.org/wiki/Curiously_recurring_template_pattern) का वर्णन कर रहे हैं। – WhozCraig
"मुझे कभी वर्चुअल विरासत की समस्या नहीं होगी" ... क्या आपने कभी मर्फी के कानून के बारे में सुना है? :) –