मैं एक प्रकार के Test
को एक टेम्पलेट प्रकार Base
से प्राप्त करना चाहता हूं जिसे मैं व्युत्पन्न प्रकार (यानी Base<Test>
) पर विशेषज्ञ हूं।टेम्पलेट में नेस्टेड टाइपपीफ का उपयोग कैसे करें?
टेम्पलेट प्रकार के अंदर, मैं व्युत्पन्न प्रकार (टेम्पलेट पैरामीटर) में परिभाषित टाइपिफ़ का उपयोग करना चाहता हूं।
template <typename T>
class Base
{
protected:
void func(typename T::X x) {}
};
class Test : public Base<Test>
{
public:
typedef int X;
};
यह संभव है, और यदि हां, ठीक मैं बनाने की जरूरत क्या है:
error C2039: 'X' : is not a member of 'Test'
यहाँ कोड का टुकड़ा है:
हालांकि, मैं इस संकलन त्रुटि मिलती है?
(मैं इस तरह की समस्या के लिए जवाब के एक जोड़े को देखने, लेकिन मेरी परिदृश्य की तरह typename लगाकर द्वारा तय नहीं किया गया है ऐसा लगता है - यह व्युत्पन्न प्रकार के साथ विशेष किसी टेम्पलेट से पाने के साथ कुछ है?)
मुझे लगता है कि आपको इस तरह की चीज करने की इच्छा है - मुझे लगता है कि यह दो प्रकार के बीच परिपत्र संदर्भ से बचने के लिए एक इंटरफ़ेस निकालने जैसा है। – mackenir
@ मैकनेर, यह देखने के लिए एक अच्छा तरीका है। –