Нейл дал тебе ответ. Тем не менее, вы, возможно, захотите убить typedef и использовать их, чтобы ваша работа не стала такой утомительной (и это повышает читабельность):
template <typename T>
class myList : public std::list<T>
{
public:
typedef T value_type;
typedef const T const_value_type;
typedef value_type& reference;
typedef const_value_type& const_reference;
typedef value_type* pointer;
typedef const_value_type* const_pointer;
typedef std::list<T> base_container;
typedef typename base_container::iterator iterator;
typedef typename base_container::const_iterator const_iterator;
void foo ()
{
iterator it; // easy peasy
}
};
Весьма распространено быть либеральным при использовании typedef.
Кроме того, наследование от стандартного контейнера может быть плохой идеей, поскольку они на самом деле не созданы для такой вещи. Например, бесплатная функция часто лучший выбор , если вы ищете некоторые расширения для контейнера.