Smart Pointers compatibility with raw pointers

I am using a library that uses raw pointers. In my code, I use smart pointers. How do I make them compatible. For example, I have an object

std::unique_ptr<Canvas> m_canvas;

But a function call in library is

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

How do I pass m_canvas to f ?

Answer

If the function doesn’t take ownership, you might use get():

f(m_canvas.get());

If the function takes ownership, you might use release():

consume(m_canvas.release());

Leave a Reply

Your email address will not be published. Required fields are marked *