Рассмотрим следующий пример:Как мы typedef или переопределим шаблонный вложенный класс в подклассе?
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
};
Как использовать шаблонный класс вложенной в производном классе? Можно ли это сделать в текущей версии стандарта C++?
Я не понимаю, почему вы делаете Вложенный «производный» класс, потому что класс Derived наследует класс Nested. – Craig
Я хочу, чтобы «вложенный» класс был инкапсулирован в «Base», а класс «Derived» может расширять или использовать класс «Base :: Nested». – leiiv
В каком случае используется 'using Base :: Nested;' не работает? –