[英]function call with shared pointer whose object should be const
我有一个类型为A
的变量a
。
A a;
我想调用一个函数,它将类型A
的const引用作为输入参数。
fun(const A &a);
在一些代码更改后,我决定最好将变量a
的类型更改为std::shared_ptr<A>
std::shared_ptr<A> a;
改变函数fun
的最佳方法是什么,以确保对象a
永远不会改变(它应该保持const)?
应该保持fun
,我应该称之为:
fun(*a.get())
还是有其他选择吗? 不知怎的,这对我来说很难看......
我想简单地将fun
变为fun(const std::shared_ptr<A> &a)
将无法工作,因为我想确保该函数不会更改底层对象而不是共享指针。
我不能使用std::shared_ptr<const A> a
因为有必要在某个时候更改变量a
。
void fun(const A& a);
似乎没有对参数的生命周期产生任何影响,请保留现在的签名(将std::shared_ptr
或std::unique_ptr
作为函数参数传递总是表明这些生命周期的含义)。 像这样称呼它:
auto a = std::make_shared<A>();
fun(*a);
这样,你可以绕过wordy *a.get()
并直接使用std::shared_ptr
提供的dereference运算符 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.