最佳答案
我第一次尝试使用 C + + 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
的内容作为引用似乎是非本能的,这些内容将是一个引用的引用。其次,因为函数签名变得更大了。第三,因为在生成的代码中,需要两个连续的间接指针才能到达我的变量。