我是类的新手,所以我不能将参数传递给 std::vector::insert()
:
//myclass.h
class myClass//: private std::vector<char>
{
private:
typedef char mytype;
typedef std::vector<mytype> vector;
vector Store;
...
/* iterators */
const vector::const_iterator begin() const
{
return Store.begin() ;
}
const vector::const_iterator end() const
{
return Store.end();
}
vector::iterator begin()
{
return Store.begin() ;
}
vector::iterator end()
{
return Store.end();
}
template<class Iter>
void insert(vector::const_iterator c, Iter a, Iter b)
{
Store.insert(c,a,b); //error
}
当我编译包含该 .h 文件的 .cpp 时出错。 谁能帮帮我?提前致谢。
[Error] no matching function for call to 'std::vector::insert(std::vector::const_iterator&, __gnu_cxx::__normal_iterator >&, __gnu_cxx::__normal_iterator >&)'
最佳答案
我相信,您使用的是 C++11 之前的编译器。在 C++11 之前,vector::insert 将第一个迭代器作为非常量 - 而您的函数使用 const_iterator。
升级编译器或更改插入的签名以接受非常量迭代器。
关于c++ - 如何将参数传递给 std::vector::insert()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33680551/