为 boost::p tr_vector 创建一个容器类



我正在尝试为 boost::p tr_vector 创建一个容器类,我只是在让迭代器工作时遇到了一些麻烦。

以下是 IM 尝试实现的成员函数之一:

//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::p tr_vector::iterator"之前需要"typename"

typename boost::ptr_vector<T>::iterator it;

相关内容

  • 没有找到相关文章

最新更新