Как наследовать шаблонный класс?

135
23 августа 2019, 12:20

Как создать обычный (не шаблонный класс), который наследовал бы шаблонный без явного определения типа? Хочу сделать подобие итератора,

template <class T> class Iterator : public New_List_<T>
{...}

но если его(class Iterator) не сделать шаблонным

class Iterator : public New_List_<T>
{...}

выходит ошибка синтаксиса, до компиляции. Выход есть выставить определенный тип к примеру int

class Iterator : public New_List_<int>
{...}

Но хочется избежать этой ситуации и не делать случай частным.

UPD

Но кто писал STL контейнер (к примеру)List не мог же засунуть внутрь основного класса класс итератор, как то это наверное "рефакторилось"? Просто если даже перегрузить некоторые операторы к примеру = может получится следующая громоздкая реализация

template <class T> Iterator<T> *Iterator<T>::operator=(New_List_<T> *List)
{
    Iterator = List;
    return this;
}

и при вызове этого сего будет выглядеть, не так

std::list<int>::iterator iter = v.begin();

а так std::list<int>::iterator<int> iter = v.begin();

Конечно если я прав, - не компилил.

Answer 1

Как раз засунуть итератор внутрь основного класса и позволит писать std::list<int>::iterator вместо std::vector<int>::iterator<int> iter = v.begin();. Засунуть можно двумя способами:

  1. создав внутренний класс
template<typename T> class
list
{
    public: class
    iterator
    {
...
  1. объявив алиас для внешнего класса
template<typename T> class
list_iterator
{
...
template<typename T> class
list
{
    public: using
    iterator = list_iterator<T>;
...
READ ALSO
Подключение к веб-серверу из глобальной сети

Подключение к веб-серверу из глобальной сети

Я пишу свой веб-сервер на C++Планируется подключаться к нему с браузера, а он в ответ должен выдавать html-странички

116
Как это работает? Пример TDLib с шаблонами на C++

Как это работает? Пример TDLib с шаблонами на C++

Не могу до конца сообразить как работает данная конструкция в примере использования библиотеки TDLibсам пример

139
Рекурсия и фишки

Рекурсия и фишки

Есть задача о фишках, необходимо ее решить рекурсией, вот условие:

135
Как сложить все элементы массива? C++ [закрыт]

Как сложить все элементы массива? C++ [закрыт]

У меня есть задача: сложить все элементы массива заранее не зная сколько их и потом эту сумму сделать значением переменнойПомогите пожалуйста!

143