我有一个函数,它返回const A类型的共享指针。
std::shared_ptr< const A> getPointer() const;我有一个函数,它需要一个shared_ptr类型的A。
void foo(std::shared_ptr<A> a);当我试图调用我的函数时,我会得到以下消息:
错误:无法将“shared_ptr< const A>”转换为“shared_ptr”
我不关心表演。这一行代码位于GUI中,完全不是任何热代码的一部分。(这意味着我不在乎是否创建A副本)
解决这个问题最简单的方法是什么?
发布于 2018-11-12 15:27:36
foo(std::const_pointer_cast<A>(getPointer()));如果您的函数将更改指针,并且不希望发生这种情况:
auto ptr = std::make_shared<A>(*(getPointer().get()));
foo(ptr);免责声明:
第一个选项给出了如果foo修改接收到的指针的风险。
第二个选项生成整个对象的副本,并需要一个复制构造函数。
https://stackoverflow.com/questions/53265135
复制相似问题