dicards qualifiers
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相关推荐
- error: passing ‘const xxx’ as ‘this’ argument discards qualifiers c++primer 5th文本查询程序一个错误请各位指教(已解决)
文件main.cc 文件main.cc #include <string> #include <iostream> #include <memory> #inclu ...
- 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:: ...
- OpenCL Function Qualifiers (函数限定符)
OpenCL Function Qualifiers (函数限定符) OpenCL 3.0 Reference Pages -> OpenCL Compiler -> Function Q ...
- C++ ERROR:error: passing 'XXX' as 'this' argument of 'XXX' discards qualifiers
遇到了如题目的这种错误: error: passing 'XXX' as 'this' argument of 'XXX' discards qualifiers 如何产生的? 我将一个const变量 ...
- 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 ...
- 翻译:Identifier Qualifiers标识限定符
本文为mariadb官方手册:Identifier Qualifiers的译文. 原文:https://mariadb.com/kb/en/library/identifier-qualifiers/ ...
- error: passing xxx as 'this' argument of xxx discards qualifiers的解决办法
写demo的时候碰到一个C++编译报错,初见也是奇怪了,编译器指向我调用类成员函数出错了. 然后百度看了下别人的博客瞬间就醍醐灌顶了,原来是编译器认为成员函数可能会修改被const限定的变量 解决办法 ...
- Error: “incorrect inclusion of a cudart header file”
CUDA header files with such qualifiers should ONLY be included in *.cu files.
- Linux tcpdump命令详解与Wireshark
简介 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具. tcpdump可以将网络中传送的数据包的 ...
- 【C++】动态内存管理/move/以及移动构造与移动赋值运算符
文章目录 1 .对象移动与右值引用 实际应用过程中遇到的问题及其解决方案 c++中临时变量不能作为非const的引用参数 2. 动态内存管理类 3. 对象移动与右值引用 4. 移动构造与移动复制运算符 ...
最新文章
- 计算机科学界至今未解决的四大难题
- 洛谷P2633 Count on a tree
- 从语义开始 – 概念、意义、实践
- VIP站长大会(北京站)常见问题解答
- 台式计算机更新不了,台式机更新造成电脑关不了机怎么办
- Python自学之路NO.1-Python的安装与配置
- c++ 多个字符串排序_RPython Data Science系列:数据处理(5)--字符串函数基于R(一)
- python可以不用主函数吗_python自定义函数可以向前引用不用声明
- 处理PHP字符串的10个简单方法
- HDU1231 最大连续子序列【最大子段和】
- this.controls指所有控件吗?_Excel 控件【窗体控件】和【ActiveX控件】使用基础教程...
- 注册表的基本操作(.Net)
- keepalived + web高可用集群实现主从模型、双主模型配置
- matlab验证dtft移位性质,7.DTFT的Matlab实现.ppt
- 自行委托的鉴定意见可以作为审理依据
- TSMaster1.4.2补丁包发布
- design pattern scard
- 从团队协作的五大障碍看团队管理该怎么做
- Java快速入门到精通—大数字运算(BigDecimal 类)
- oracle 外部表加载txt文件-导入银行信息-ok