码迷,mamicode.com
首页 > 编程语言 > 详细

发现一点c++的不足之处

时间:2017-09-21 21:02:46      阅读:118      评论:0      收藏:0      [点我收藏+]

标签:优雅   直接   turn   bsp   下标   不能   style   中括号   无法   

我碰到这样一种情况:一个函数,它的参数是const Bigint &a,同时我重载了Bigint的下标访问,就是[]这个符号。中括号的重载我是这样写的:

1 int &operator [](int x){ return a[x]; }

,a[x]是Bigint的成员a的一个元素。那么问题来了,有的Bigint带const,有的不带,访问不带const的Bigint对象没问题。但是访问带const的就会出错,因为const int&不能转换成int&。。

我想:把那个函数的int改成const int试试看,结果发现我的原意是要改变不带const的BIgint的值,结果现在改不了,因为c++的逻辑是:如果你有可能搞事情,就直接禁止你搞事情。而函数又不能有同类型,非const和const的重载,所以这个问题根本无法解决。

据张子苏大佬说,好像可以用c++11的一个什么reference解决,但是noip不能用c++11呀。。所以只能不优雅了。。

 

发现一点c++的不足之处

标签:优雅   直接   turn   bsp   下标   不能   style   中括号   无法   

原文地址:http://www.cnblogs.com/MyNameIsPc/p/7570131.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!