在模板类中使用向量迭代器

Nic*_*ung 3 c++ templates iterator stl

我试图在我正在创建的模板类中创建一个矢量迭代器.以下是故障代码.

void editor<T>::insert()
{   
        typedef typename std::vector<T>::const_iterator itr;
        itr it;
        it = this->buffer.begin();

        for(int i = 0; i < line_num -1; ++i)
        {   
            ++it;
        }

        this->buffer.insert(it, user_text);
        std::cout << "Cool, Your new line has been inserted." << '\n';
    }
    std::cout << '\n';
}
Run Code Online (Sandbox Code Playgroud)

我收到以下编译错误:

error: no match for ‘operator=’ in ‘it = ((editor<std::basic_string<char> >*)this)->editor<std::basic_string<char> >::buffer.std::vector<_Tp, _Alloc>::begin [with _Tp = std::vector<std::basic_string<char>, std::allocator<std::basic_string<char> > >, _Alloc = std::allocator<std::vector<std::basic_string<char>, std::allocator<std::basic_string<char> > > >, std::vector<_Tp, _Alloc>::iterator = __gnu_cxx::__normal_iterator<std::vector<std::basic_string<char>, std::allocator<std::basic_string<char> > >*, std::vector<std::vector<std::basic_string<char>, std::allocator<std::basic_string<char> > >, std::allocator<std::vector<std::basic_string<char>, std::allocator<std::basic_string<char> > > > > >, typename std::_Vector_base<_Tp, _Alloc>::_Tp_alloc_type::pointer = std::vector<std::basic_string<char>, std::allocator<std::basic_string<char> > >*]()’ 
Run Code Online (Sandbox Code Playgroud)

我有一种感觉编译器与我typedef上面的语句混淆,但这就是我看到如何声明正确的迭代器,但由于某种原因它无法正常工作.有任何想法吗?

jua*_*nza 7

如果buffer是a std::vector< std::vector<T> >buffer.begin()是a std::vector< std::vector<T> >::iterator或者const_iterator,那么你typedef就不匹配了.