Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Не могу добраться до итератора в шаблонном векторе std::vector<T>
Форум на CrossPlatform.RU > Разработка > С\С++
nvrrus
Здравствуйте, уважаемые форумчане. Подскажите, пожалуйста, может кто сталкивался с такой проблемой.

Пишу обертку над std::vector в QT так:

template<typename T >
class EXPLIB C_VectorW : public C_Serialization
{
private:
std::vector<T> m_vec;

public:
    C_VectorW() { }
    C_VectorW(const vector<T>& Vec) { m_vec = Vec;  }
    C_VectorW(const C_VectorW<T>& Vec) { m_vec = Vec.m_vec; }
    virtual ~C_VectorW() {}

    unsigned int size() const { return m_vec.size(); }
    void clear() { m_vec.clear(); }
    void push_back(const T& data) { m_vec.push_back(data); }
    void erase(std::vector<T>::iterator it)
    {

    }
};


Пытаюсь реализовать метод erase, связав его с итератором на std::vector<T>
Ругается - 'std::vector<T>::iterator' - is not a type

Что сделать, чтобы реализовать функцию erase с итераторами? Как подружить класс обертку с итераторами?

Заранее большое спасибо!




Алексей1153
а вот так

void erase(typename std::vector<T>::iterator it)


http://msdn.microsoft.com/en-us/library/8y88s595(VS.71).aspx
Iron Bug
В данном случае, компилятор не может определить, тип это или член класса. Поэтому надо явно ему сказать, что std::vector<T>::iterator - это тип данных, добавив квалификатор typename:
 void erase(typename std::vector<T>::iterator it)


nvrrus
Спасибо, уважаемые Iron Bug и Алексей1153.

Свою проблему с использованием итераторов решил использованием std::vector - вытаскиваю его из прослойки, где это нужно.

Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.