通过引用将 unique_ptr 传递给函数
passing unique_ptr to a function by reference
我注意到我正在编译的某个库中的行为有点出乎意料,我想澄清一下。
有一个 class 具有以下形式的方法:
void notify(Frame & frame);
现在,有一个调用者使用 unique_ptr
如下:
std::unique_ptr <Frame> localFrame (new Frame(rows, cols));
现在当它调用它执行的方法时:
obj->notify(*localFrame);
所以这依赖于将底层指针隐式转换为引用。
我的问题是这是跨平台和预期的行为吗?我做这样的事情有什么用吗:
obj->notify(*localFrame->get());
"Some implicit conversion" 是 std::unique_ptr::operator*,这是一个非常标准的运算符,returns 是对指向对象的引用。你不需要把它复杂化。
我注意到我正在编译的某个库中的行为有点出乎意料,我想澄清一下。
有一个 class 具有以下形式的方法:
void notify(Frame & frame);
现在,有一个调用者使用 unique_ptr
如下:
std::unique_ptr <Frame> localFrame (new Frame(rows, cols));
现在当它调用它执行的方法时:
obj->notify(*localFrame);
所以这依赖于将底层指针隐式转换为引用。
我的问题是这是跨平台和预期的行为吗?我做这样的事情有什么用吗:
obj->notify(*localFrame->get());
"Some implicit conversion" 是 std::unique_ptr::operator*,这是一个非常标准的运算符,returns 是对指向对象的引用。你不需要把它复杂化。