создание класса контейнера для boost :: ptr_vector

я пытаюсь сделать контейнерный класс для boost :: ptr_vector, и я просто немного затрудняюсь заставить итератор работать ..

Вот одна из функций-членов, которую я пытаюсь реализовать:

//data is of type boost::ptr_vector<T>
//Date is a custom date class that i made with > operator overloaded

template <class T>
void P_VContainer<T>::addElementByDate(T* item)
{
boost::ptr_vector<T>::iterator it;

for(it = data.begin(); it < data.end(); it++)
{
T temp = *it;
Date = *lhs = item->getDate();
Date = *rhs = item.getDate();

if(*lhs > *rhs)
{
data.insert(it, item);
return;
}
}
data.insert(it, item);
}

я получаю ошибку:

p_vcontainer.cpp: In member function ‘void P_VContainer<T>::addElementByDate(T*)’:
p_vcontainer.cpp:52:2: error: need ‘typename’ before ‘boost::ptr_vector<T>::iterator’ because ‘boost::ptr_vector<T>’ is a dependent scope
p_vcontainer.cpp:52:33: error: expected ‘;’ before ‘it’
p_vcontainer.cpp:54:7: error: ‘it’ was not declared in this scope

есть идеи как это исправить?

0

Решение

Капитан Очевиден на помощь!

перед «boost :: ptr_vector :: iterator» необходимо указать «typename»

записывать typename boost::ptr_vector<T>::iterator it;

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]