stl_vector.h:43: error: passing ‘const vector<int, __default_alloc_template<false, 0> >’ as ‘this’ argument of ‘T* vector<T, Alloc>::begin() [with T = int, Alloc = __default_alloc_template<false, 0>]’ discards qualifiers

这个是我看了侯大师的STL源码剖析后,自己模仿实现vector时出现的错误

相关的代码

iterator begin(){return start;}

iterator end(){return finish;}

size_type size()const

{

return size_type(end() - begin());

}

产生discards qualifiers类错误可能原因如下

Usual Causes
1. A non-const member function is being invoked for a const object
2. A const object is being passed as a non-const parameter
3. A const member function calls a non-const member function

在这是我是用一个 const修饰的size调用了非const方法 begin() 和end() 虽然我在size()中并没有修改什么内容,但编译是不通过的,从编译的角度就杜绝你可能通过调用非const方法来间接 修改。

其实侯大师的书里,为了简介把源码去掉了很多内容 我就傻了吧唧的敲上去了。。。

去看了一下库里的

库里有相应的const版的begin 和end 供const方法调用的

(借用几点别人的总结):

关于Const函数的几点规则:

const对象只能访问const成员函数,而非const对象可以访问任意的成员函数,包括const成员函数.
  const对象的成员是不可修改的,然而const对象通过指针维护的对象却是可以修改的.
  const成员函数不可以修改对象的数据,不管对象是否具有const性质.它在编译时,以是否修改成员数据为依据,进行检查

dicards qualifiers相关推荐

  1. error: passing ‘const xxx’ as ‘this’ argument discards qualifiers c++primer 5th文本查询程序一个错误请各位指教(已解决)

    文件main.cc 文件main.cc #include <string> #include <iostream> #include <memory> #inclu ...

  2. C++编程常见问题—error: passing 'const std::map]' discards qualifiers或pass-by-reference-to-const-map导致的“d

    产生问题的场景: int func(const map<int, string> &aMap) { string value = amap[0]; } 或者 int  Test:: ...

  3. OpenCL Function Qualifiers (函数限定符)

    OpenCL Function Qualifiers (函数限定符) OpenCL 3.0 Reference Pages -> OpenCL Compiler -> Function Q ...

  4. C++ ERROR:error: passing 'XXX' as 'this' argument of 'XXX' discards qualifiers

    遇到了如题目的这种错误: error: passing 'XXX' as 'this' argument of 'XXX' discards qualifiers 如何产生的? 我将一个const变量 ...

  5. C语言编译时产生的警告:initializing ‘char *‘ with an expression of type ‘const char *‘ discards qualifiers

    警告的产生: char *my_strstr(const char *str1,const char *str2) {const char *s1 = NULL;const char *s2 = NU ...

  6. 翻译:Identifier Qualifiers标识限定符

    本文为mariadb官方手册:Identifier Qualifiers的译文. 原文:https://mariadb.com/kb/en/library/identifier-qualifiers/ ...

  7. error: passing xxx as 'this' argument of xxx discards qualifiers的解决办法

    写demo的时候碰到一个C++编译报错,初见也是奇怪了,编译器指向我调用类成员函数出错了. 然后百度看了下别人的博客瞬间就醍醐灌顶了,原来是编译器认为成员函数可能会修改被const限定的变量 解决办法 ...

  8. Error: “incorrect inclusion of a cudart header file”

    CUDA header files with such qualifiers should ONLY be included in *.cu files.

  9. Linux tcpdump命令详解与Wireshark

    简介 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具. tcpdump可以将网络中传送的数据包的 ...

  10. 【C++】动态内存管理/move/以及移动构造与移动赋值运算符

    文章目录 1 .对象移动与右值引用 实际应用过程中遇到的问题及其解决方案 c++中临时变量不能作为非const的引用参数 2. 动态内存管理类 3. 对象移动与右值引用 4. 移动构造与移动复制运算符 ...

最新文章

  1. 计算机科学界至今未解决的四大难题
  2. 洛谷P2633 Count on a tree
  3. 从语义开始 – 概念、意义、实践
  4. VIP站长大会(北京站)常见问题解答
  5. 台式计算机更新不了,台式机更新造成电脑关不了机怎么办
  6. Python自学之路NO.1-Python的安装与配置
  7. c++ 多个字符串排序_RPython Data Science系列:数据处理(5)--字符串函数基于R(一)
  8. python可以不用主函数吗_python自定义函数可以向前引用不用声明
  9. 处理PHP字符串的10个简单方法
  10. HDU1231 最大连续子序列【最大子段和】
  11. this.controls指所有控件吗?_Excel 控件【窗体控件】和【ActiveX控件】使用基础教程...
  12. 注册表的基本操作(.Net)
  13. keepalived + web高可用集群实现主从模型、双主模型配置
  14. matlab验证dtft移位性质,7.DTFT的Matlab实现.ppt
  15. 自行委托的鉴定意见可以作为审理依据
  16. TSMaster1.4.2补丁包发布
  17. design pattern scard
  18. 从团队协作的五大障碍看团队管理该怎么做
  19. Java快速入门到精通—大数字运算(BigDecimal 类)
  20. oracle 外部表加载txt文件-导入银行信息-ok

热门文章

  1. iOS如何通过安装描述文件获取设备UDID
  2. ios描述文件下载安装
  3. 火灾探测和监测系统的最新进展回顾
  4. 操作系统的三个抽象概念
  5. 用css制作网页目录,利用CSS制作树状目录(菜单)
  6. DGUS组态软件中图标旋转显示如何使用
  7. python制作日历并保存成excel_python台历代码--涉及知识点为Excel表格合并等操作
  8. 主机无法复制文件到ubuntu虚拟机的解决方法
  9. 论文阅读笔记:Weakly-supervised Semantic Segmentation in Cityscape via Hyperspectral Image
  10. MySQL中的保留字