c++: неопределённый тип при наследовании

105
19 января 2021, 00:40

Подскажите, как разрешить следующую ситуацию - у меня есть базовый контейнер от которого наследуется 2 различных:

class IExtractorBase;
class CExtractor : public IExtractorBase;
class CExtracted_threaded: public IExtractorBase;

У CExtractor и CExtracted_threaded различаются итераторы (опять же разные классы), но хотелось бы в базовом классе сделать чистые виртуальные функции

virtual iterator        begin() = 0;
virtual iterator        end() = 0;
virtual const_iterator  cbegin() const = 0;
virtual const_iterator  cend() const = 0;

но сами типы разные для наследуемых классов

Как лучше всего обойти проблему?

Вижу 2 пути

1) сделать базовый класс шаблонным, чтобы можно было указывать что за класс будет итератором и константным итератором

2) можно вообще не делать абстрактный класс

Мне кажется, что первый вариант лучше. Или есть более хорошие решения?

READ ALSO
Работа с сетью в qt

Работа с сетью в qt

Например в консольных программах на языке си или c++ я могу использовать работу с сетью постепенноНу тоесть

123
Как записать дамп при краше

Как записать дамп при краше

Выпустили мы программу в продажу,у кого-то крашит у кого-то нетУ разработчика - нет,но у некоторых юзеров - да

111
Возврат auto значения шаблона

Возврат auto значения шаблона

Как вернуть неизвестный заранее тип переменной шаблона при помощи ключевого слова auto ?

130
QGridLayout и QMenuBar

QGridLayout и QMenuBar

У меня класс наследуется от QWidgetВ этом классе я создал grid_layout и меню классы

114