首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >shared_ptr<const A> to shared_pointer<A>

shared_ptr<const A> to shared_pointer<A>
EN

Stack Overflow用户
提问于 2018-11-12 15:19:21
回答 1查看 949关注 0票数 0

我有一个函数,它返回const A类型的共享指针。

代码语言:javascript
复制
std::shared_ptr< const A> getPointer() const;

我有一个函数,它需要一个shared_ptr类型的A

代码语言:javascript
复制
void foo(std::shared_ptr<A> a);

当我试图调用我的函数时,我会得到以下消息:

错误:无法将“shared_ptr< const A>”转换为“shared_ptr

我不关心表演。这一行代码位于GUI中,完全不是任何热代码的一部分。(这意味着我不在乎是否创建A副本)

解决这个问题最简单的方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-12 15:27:36

cast

代码语言:javascript
复制
foo(std::const_pointer_cast<A>(getPointer()));

如果您的函数将更改指针,并且不希望发生这种情况:

代码语言:javascript
复制
auto ptr = std::make_shared<A>(*(getPointer().get()));
foo(ptr);

免责声明:

第一个选项给出了如果foo修改接收到的指针的风险。

第二个选项生成整个对象的副本,并需要一个复制构造函数。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53265135

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档