我注意到我正在编译的某个库中存在一种行为,这有点出乎意料,并想澄清一下。
有一个类有以下形式的方法:
void notify(Frame & frame);
现在,有一个调用者使用unique_ptr
,如下所示:
std::unique_ptr <Frame> localFrame (new Frame(rows, cols));
现在,当它调用方法时:
obj->notify(*localFrame);
所以这依赖于对引用的底层指针的隐式转换。
我的问题是,这是跨平台和预期的行为吗?我有什么用途可以做类似的事情:
obj->notify(*localFrame->get());
答案 0 :(得分:10)
&#34;一些隐含的转换&#34;是std::unique_ptr::operator*,它是一个非常标准的运算符,它返回对指向对象的引用。你不需要过度复杂化。