Реализация ArrayStack и ArrayStackIterator, используя абстрактные классы
У меня вот такое вот задание: используя абстрактные классы, реализовать конкретные классы: ArrayStack(на массиве) и ArrayStackIterator.
в header.cpp я поместил такие классы:
// абстрактный базовый класс Итератор
class AbstractIterator {
public:
virtual ~AbstractIterator() {};
virtual bool InRange() const = 0; // индекс в допустимых пределах?
virtual void Reset() = 0; // сбросить индекс в начало
virtual int& operator *() const = 0; // разыменование (чтение элемента)
virtual void operator ++() = 0; // сдвиг на элемент
};
// абстрактный базовый класс Контейнер
class AbstractContainer {
public:
virtual ~AbstractContainer() {};
virtual bool IsEmpty() const = 0; // контейнер пуст
virtual bool IsFull() const = 0; // контейнер полный
};
// абстрактный базовый класс Стек
class AbstractStack : public AbstractContainer {
public:
virtual void push(const int& n) = 0; // втолкнуть в стек
virtual int pop(void) = 0; // вытолкнуть из стека
};
// класс Стек на базе массива
class ArrayStack : public AbstractStack {
protected:
int size; // размерность массива
int* p; // указатель на массив
int top; // верхушка стека
public:
ArrayStack(int _size);
ArrayStack(ArrayStack& s);
~ArrayStack();
void push(const int& n); // втолкнуть в стек
int pop(void); // вытолкнуть из стека
bool IsEmpty() const;
bool IsFull() const;
friend class ArrayStackIterator;
};
// класс Итератор стека
class StackIterator;
class ArrayStackIterator : public AbstractIterator {
ArrayStack& a; // ссылка на стек
int pos; // текущая позиция итератора
StackIterator();
public:
ArrayStackIterator(const ArrayStack& _a);
bool InRange() const; // индекс в допустимых пределах
void Reset(); // сбросить индекс в начало
int& operator *() const; // разыменование (чтение элемента)
void operator ++(); // сдвиг на элемент
};
А как написать эту реализацию? Я очень туплю( Как используя абстрактные классы описать методы класса ArrayStack и ArrayStackIterator? может вопросы не правильно задаю