您的位置:首页 > 编程语言 > C语言/C++

【C++】不能将“this”指针从“const vector”转换为“vector & rhs"

2017-09-06 17:26 323 查看
最近在写STL,在对
stack
swap
函数进行测试的时候,出现了这个问题,由于是第一次见,我独自想了很久也有点迷糊,搜索调试弄了半天终于解决了,以下是出问题的代码:

template<class T, class Alloc>
bool vector<T, Alloc>::operator ==(const vector& rhs)const {
if (size() != rhs.size()) {
return false;
}
auto ptrLhs = this->start_;
auto ptrRhs = rhs.start_;
for (; ptrLhs != this->finish_ && ptrRhs != rhs.finish_; ++ptrLhs, ++ptrRhs) {
if (*ptrLhs != *ptrRhs)
return false;
}
return true;
}


问题就是出在
if (size() != rhs.size()) {
这一行

解决方法其实很简单,就是在
size()
函数的后面针对
const
vector
加上一个对
this
指针的
const
限定就好了,如下:

size_type size()const { return  end() - begin(); }


以后写容器的时候一定要注意针对
const
类型的容器要进行限定描述。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐