У меня есть переменная a
, тип которой A
.
A a;
Я хочу вызвать функцию, которая принимает константную ссылку типа A
в качестве входного аргумента.
fun(const A &a);
После некоторых изменений кода я решил, что лучше всего изменить тип переменной a
на std::shared_ptr<A>
std::shared_ptr<A> a;
Какой лучший способ изменить функцию fun
чтобы я удостоверился, что объект a
никогда не изменяется (он должен оставаться постоянным)?
должен fun
остаться таким, как есть, и я должен назвать его так:
fun(*a.get())
или есть какая-нибудь альтернатива?Каким-то образом это кажется мне уродливым ...
Я думаю, простое изменение fun
на fun(const std::shared_ptr<A> &a)
не сработает, потому что я хочу убедиться, что функция не меняет базовый объект, а не разделяемый указатель.
Я не могу использовать std::shared_ptr<const A> a
, потому что в какой-то момент необходимо изменить переменную a
.