Постфиксный оператор абстрактного базового класса c ++

У меня есть вопрос о реализации общего интерфейса итератора.

В качестве обычной практики для оператора postix функция может выглядеть следующим образом:

IteratorClass operator ++(int) {
  IteratorClass temp = *this;

  //increment stuff

  return temp
}

И в большинстве случаев это нормально. В моем случае я пытаюсь реализовать 3 итератора для одного класса. Каждый итератор будет загружать класс локальной коллекции с данными, но каждый производный итератор будет загружать его по-своему. Поскольку класс коллекции был бы одинаковым и весь код для операторов (postfix / prefix ++ / -, *) был бы одинаковым, я подумал, что хорошим способом реализовать это было бы наследование:

struct iterator {
  protected:
  Collection collection;
  public:
  operator++(int);
  operator++;
  operator--(int);
  operator--;

  virtual load() = 0;

}

struct iterator1 : public iterator {
  virtual load() { custom load function }
}

struct iterator2 : public iterator {
  virtual load() { custom load function }
}

Проблема в постфиксных операторах ... Они пытаются создать объект абстрактного типа, а затем возвращают его. Любые предложения для обходных путей или структурных изменений?

Ответы на вопрос(1)

Ваш ответ на вопрос