通过引用将unique_ptr传递给函数

时间:2018-04-18 12:47:22

标签: c++ smart-pointers unique-ptr

我注意到我正在编译的某个库中存在一种行为,这有点出乎意料,并想澄清一下。

有一个类有以下形式的方法:

void notify(Frame & frame);

现在,有一个调用者使用unique_ptr,如下所示:

std::unique_ptr <Frame> localFrame (new Frame(rows, cols));

现在,当它调用方法时:

obj->notify(*localFrame);

所以这依赖于对引用的底层指针的隐式转换。

我的问题是,这是跨平台和预期的行为吗?我有什么用途可以做类似的事情:

obj->notify(*localFrame->get());

1 个答案:

答案 0 :(得分:10)

&#34;一些隐含的转换&#34;是std::unique_ptr::operator*,它是一个非常标准的运算符,它返回对指向对象的引用。你不需要过度复杂化。