const shared_ptr到shared_ptr

use*_*508 17 boost shared-ptr

如何将指向const对象的shared_ptr转换为指向非const对象的shared_ptr.我正在尝试执行以下操作:

boost::shared_ptr<const A> Ckk(new A(4));

boost::shared_ptr<A> kk=const_cast< boost::shared_ptr<A> > Ckk;
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

Ala*_*lan 31

'boost :: const_pointer_cast'会做你想要的,但是答案的后半部分是你可能不应该使用它.99%的时候,你似乎需要抛弃一个变量的const属性,这意味着你有一个设计缺陷.Const有时候不仅仅是装饰窗户而且将其抛弃可能会导致意外的错误.

在不了解您的情况的更多细节的情况下,我们无法确定.但是,如果不提及这个事实,就不会讨论const-cast.

  • @ jons34yp:没有什么逻辑上正确的.你得到一个_const_指针; 这意味着您不能以非常规方式使用它.如果你有一个非常量指针列表,并且你想在其中放置一个const指针,那就很难了.通过修改它,你违反了与给你那个指针的人签订的合同(合同是你不要改变它).对于常规指针,这与shared_ptr一样正确. (10认同)
  • +1那个const是有原因的.也许. (2认同)

Nik*_*nić 9

使用boost::const_pointer_cast,文档.