より単純なコンテナーであるスタックを作成することから始める必要があります。スタックはインターレーターを必要としないため、単純です。
std::list の上に実装された、いくつかの継承を伴うスタックの小さな例を書きました。
最初は自分で書いてみてください。ただし、必要に応じて、これを例として見ることができます。
#include <iostream>
#include <list>
/* Here mainly to demonstrate inheritance by providing a stack interface */
template<typename T>
class IStack
{
public:
virtual void push(const T &i) = 0;
virtual T& pop() = 0;
};
template<typename T>
class Stack : public IStack<T>
{
private:
std::list<T> _internal;
public:
virtual void push(const T &i)
{
_internal.push_back(i);
}
virtual T& pop()
{
T& tmp = _internal.back();
_internal.pop_back();
return tmp;
}
};
編集:ジェームズが指摘したように、ベースクラスの名前を変更しました。