Considérez ce qui suit:Comment typedef ou redéfinir une classe imbriquée modèle dans la sous-classe?
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
};
Comment utiliser la classe imbriquée dans la classe basé sur un modèle dérivé? Est-ce possible de faire dans la version actuelle de la norme C++?
Je ne comprends pas pourquoi vous faites Imbriqué une classe 'dérivée', car la classe dérivée héritera de toute façon de la classe imbriquée. – Craig
Je veux que la classe "imbriquée" soit encapsulée dans "Base", et que la classe "Derived" puisse étendre ou utiliser la classe "Base :: Nested". – leiiv
Dans quel cas l'utilisation de Base :: Nested; 'ne fonctionne pas? –