智能指针与原始指针的兼容性

Smart Pointers compatibility with raw pointers

我正在使用一个使用原始指针的库。在我的代码中,我使用智能指针。我如何使它们兼容。 比如我有一个对象

std::unique_ptr<Canvas> m_canvas;

但是库中的一个函数调用是

f(..., Canvas* c,...);

如何将 m_canvas 传递给 f

如果函数没有取得所有权,您可以使用 get():

f(m_canvas.get());

如果函数取得所有权,您可以使用 release():

consume(m_canvas.release());