独自のコンテナを作成するタスクがLinked_list
ありArray_list
ます。私はそれらのための1つのインターフェースを持っています:
typedef int value_type;
class Container
{
public:
class Iterator
{
public:
Iterator();
Iterator(value_type* other);
Iterator(const Iterator& other);
Iterator& operator=(const Iterator& other);
...
};
Container();
Container(const Container& other);
~Container();
virtual value_type& front() const=0;
virtual value_type& back() const=0;
virtual Iterator begin() const=0; //
...
};
Linked_listとArray_listの派生クラスを作成しました。
class Linked_list:public Container
{
public:
long int cur_size;
List elem;
static Link end_;
class Iterator: public Container::Iterator
{
friend Linked_list;
Link *p;
};
Iterator begin() const; //overriding virtual function return type differs ...
...
}
私はそれがすべて間違っていると思います。ネストされたクラスLinked_list::Iterator
は派生クラスである必要がありますか?インターフェイスを変更できない場合、これを行うことはできますか?