首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

话说C++中没办法将一个const类型的pointer赋值给一个普普通通的pointer变量吗

2014-01-14 
话说C++中没办法将一个const类型的pointer赋值给一个普通的pointer变量吗?这样太不方便了呀!有时候在一个

话说C++中没办法将一个const类型的pointer赋值给一个普通的pointer变量吗?
这样太不方便了呀!有时候在一个函数中,为了确保安全,某个参数要设成const类型的pointer,但是同时又可能将这个参数赋值给一个普通的pointer变量,这个怎么解决?只能够取消掉那个const限定词吗?
[解决办法]

引用:
这样太不方便了呀!有时候在一个函数中,为了确保安全,某个参数要设成const类型的pointer,但是同时又可能将这个参数赋值给一个普通的pointer变量,这个怎么解决?只能够取消掉那个const限定词吗?

这种需求虽然可以用const_cast解决,但是不是好的需求
[解决办法]
与设计有关哈,改变设计来解决。
[解决办法]
search的返回指针类型设计为const就是个设计错误。item是否const并不是由链表的管理机构来决定的,而是由item本身决定的。
[解决办法]
引用:
Quote: 引用:

search的返回指针类型设计为const就是个设计错误。item是否const并不是由链表的管理机构来决定的,而是由item本身决定的。


此话何解呀?我以为一个函数的参数在函数执行过程中不改变并且不应该改变的话,就应该设为const类型;又因为返回的值是用这个参数来赋值的,所以也必须设为const类型。


你这叫盲目。node作为item的管理者,在链表的管理性操作中本来就有发生变动(例如删除)的需求,除非你需要的是不能删除节点的链表(但看来你不是),否则所有对node的指针都应该是node*而不是const node*,使用const node *与你的需求就是矛盾的,所以才会产生你遇到的这个问题,这是设计错误。
[解决办法]
我觉得楼主还没弄明白,const T *p和T const *p的区别,要看你到底是限定指针指向不能被更改,还是指针所指向的内容不能更改。
[解决办法]
这个世界上唯一不变的就是变化。

热点排行