【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类型的容器要进行限定描述。
相关文章推荐
- c++;对象引用前加const报错:不能将“this”指针从“const a”转换为“a &”
- 不能将this指针从“const type" 转换为"type &"
- 不能将“this”指针从“const Vector3D”转换为“Vector3D &amp;" 错误
- error C2662: 不能将“this”指针从“const Node_align”转换为“Node_align &”解决方案
- 基类代码error C2662: 不能将“this”指针从“const Node_align”转换为“Node_align &”解决方案
- 不能将“this”指针从“const CPaopao”转换为“CPaopao &
- 不能将“this”指针从“const Vehicle”转换为“Vehicle &”
- C++ error C2662: “LinkNode<T> *List<T>::Locate(int)”: 不能将“this”指针从“const List<int>”转换为“List<int> &”
- error C2664: “atoi”: 不能将参数 1 从“CString”转换为“const char *"
- c++ 错误:n个重载没有“this”指针的合法转换
- C++类型转换与this指针调整
- error LNK2001: unresolved external symbol "public: int __thiscall CFtProtocolThread::getFnIds(class _STL::vector > &)" (?getFnId
- More Effective C++----(1)指针与引用的区别 & (2)尽量使用C++风格的类型转换 & (3)不要对数组使用多态
- [c/c++] "? :" 在何种状况下不能修改为"if (..) {..} else {..}"?
- 不能将参数 1 从“int &(__thiscall RBTree<T>::* )(RBTreeNode<T> *)”转换为“int &(__cdecl *)(RBTreeNode<T> *)”
- 不能将“this”指针从“const XXX”转为“XXX &”
- 所谓"在表达式中,数组名总是被转换为指向该数组第一个元素的指针"应该如何理解?
- #("The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name:")
- C++ 类 & 对象-C++ 内联函数-C++ this 指针-C++ 类的静态成员
- C++终于开始不再只是“This is a C++ Program"了