如何将指向常量对象的shared_ptr转换为指向非常数对象的shared_ptr。我正在尝试做以下几件事:
boost::shared_ptr<const A> Ckk(new A(4));
boost::shared_ptr<A> kk=const_cast< boost::shared_ptr<A> > Ckk;但它不起作用。
发布于 2009-12-17 04:16:36
'boost::const_pointer_cast‘会做你想要的,但答案的后半部分是你可能不应该使用它。99%的时候,当你似乎需要丢弃一个变量的const属性时,这意味着你有一个设计缺陷。Const有时不仅仅是装点门面,抛弃它可能会导致意想不到的bug。
如果不知道你的情况的更多细节,就不能确定。但是,没有一个关于const-cast的讨论不提及这一事实。
发布于 2009-12-16 17:01:53
使用boost::const_pointer_cast、documentation.
发布于 2009-12-16 17:18:34
正确的方法应该是这样
boost::shared_ptr<A> kk (boost::const_pointer_cast<A>(Ckk));https://stackoverflow.com/questions/1913238
复制相似问题