я пытаюсь сделать контейнерный класс для 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
есть идеи как это исправить?
Капитан Очевиден на помощь!
перед «boost :: ptr_vector :: iterator» необходимо указать «typename»
записывать typename boost::ptr_vector<T>::iterator it;
Других решений пока нет …