繁体   English   中英

函数调用共享指针,其对象应为const

[英]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_ptrstd::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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM