निम्न पर विचार करें:हम subclass में एक templated घोंसला वर्ग टाइप या परिभाषित कैसे करते हैं?
template <typename T>
class Base {
public:
template <typename U>
class Nested { };
};
template <typename T>
class Derived : public Base<T> {
public:
//How do we typedef of redefine Base<T>::Nested?
using Base<T>::Nested; //This does not work
using Base<T>::template<typename U> Nested; //Cannot do this either
typedef typename Base<T>::template<typename U> Nested Nested; //Nope..
//now we want to use the Nested class here
template <typename U>
Class NestedDerived : public Nested { };
//or like this:
Nested<int> nestedVar; // obviously does not work
};
व्युत्पन्न कक्षा में टेम्पलेटेड नेस्टेड क्लास का उपयोग कैसे करें? क्या यह सी ++ मानक के वर्तमान संस्करण में करना संभव है?
मुझे समझ नहीं आता तुम क्यों कर रहे हैं एक 'व्युत्पन्न' वर्ग को नेस्टेड किया गया है, क्योंकि क्लास व्युत्पन्न वैसे भी नेस्टेड क्लास का वारिस करेगा। – Craig
मैं "बेस" में encapsulated "Nested" कक्षा चाहता हूं, और "व्युत्पन्न" कक्षा "बेस :: नेस्टेड" कक्षा का विस्तार या उपयोग कर सकते हैं। – leiiv
किस प्रयोग-मामले में 'बेस :: नेस्टेड का उपयोग करते हुए,' काम नहीं करते? –