我注意到我正在编译的某个库中有一个行为,这有点出乎意料,因此想澄清一下。
有一个类,该类具有以下形式的方法:
void notify(Frame & frame);
现在,有一个使用
unique_ptr
的调用方,如下所示:std::unique_ptr <Frame> localFrame (new Frame(rows, cols));
现在,当它调用该方法时,它将执行以下操作:
obj->notify(*localFrame);
因此,这依赖于基础指针到引用的某种隐式转换。
我的问题是这个跨平台和预期的行为吗?对我来说有什么用吗?
obj->notify(*localFrame->get());
最佳答案
“某些隐式转换”是std::unique_ptr::operator*,它是一个标准的运算符,它返回对指向对象的引用。您不需要太复杂。