У меня есть первая попытка использовать С++ 11 unique_ptr
; Я заменяю полиморфный необработанный указатель внутри моего проекта, который принадлежит одному классу, но довольно часто проходит.
У меня были такие функции, как:
bool func(BaseClass* ptr, int other_arg) {
bool val;
// plain ordinary function that does something...
return val;
}
Но вскоре я понял, что не могу переключиться на:
bool func(std::unique_ptr<BaseClass> ptr, int other_arg);
Потому что вызывающий должен обработать свойство указателя на функцию, чего я не хочу. Итак, каково наилучшее решение моей проблемы?
Я, хотя передаю указатель как ссылку, вот так:
bool func(const std::unique_ptr<BaseClass>& ptr, int other_arg);
Но я чувствую себя очень неудобно в этом, во-первых, потому что кажется неинтуитивным передавать что-то уже набранное как _ptr
как ссылку, что будет ссылкой на ссылку. Во-вторых, потому что сигнатура функции становится еще больше. В-третьих, потому что в сгенерированном коде для достижения моей переменной потребуется два последовательных указателя указателя.