У меня есть задача написать собственные контейнеры Linked_list
и Array_list
. У меня есть один интерфейс для них:
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
быть производным классом?
Можно ли это сделать, если я не могу изменить интерфейс?