我有一个变量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
。
答案 0 :(得分:5)
由于export interface IPagedResults<T>{
results: T;
totalRecords: number;
}
似乎对参数的生存期没有任何影响,因此请保持签名不变(传递void fun(const A& a);
或std::shared_ptr
作为函数参数总是提示这些对生命的影响)。这样称呼它:
std::unique_ptr
通过这种方式,您可以绕开冗长的auto a = std::make_shared<A>();
fun(*a);
并直接使用*a.get()
提供的dereference operator。