我注意到我正在编译的某个库中的行为,这有点出乎意料,想澄清一下。
有一个类具有以下形式的方法:
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*,这是一个非常标准的运算符,返回对指向对象的引用。你不需要把它复杂化。