当前位置:  开发笔记 > 编程语言 > 正文

用于修改非const对象的编译器错误

如何解决《用于修改非const对象的编译器错误》经验,为你挑选了1个好方法。

foo通过引用引用vec,你不能改变const.因此要么删除调用setBool的行,要么如果你真的要设置bool,请将参数类型更改为std :: vector&.

或者对实现更加严格......你看,这两个函数存在:

T& vector::operator[](int);  
T const& vector::operator[](int) const;  

当你在const对象上调用"vec [i]"时,只有第二个有效,所以它被选中.但是这个重载显然会返回T const&,这就是你无法改变的事情.



1> 小智..:

foo通过引用引用vec,你不能改变const.因此要么删除调用setBool的行,要么如果你真的要设置bool,请将参数类型更改为std :: vector&.

或者对实现更加严格......你看,这两个函数存在:

T& vector::operator[](int);  
T const& vector::operator[](int) const;  

当你在const对象上调用"vec [i]"时,只有第二个有效,所以它被选中.但是这个重载显然会返回T const&,这就是你无法改变的事情.

推荐阅读
ifx0448363
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有