Получить нормальный ptr от shared_ptr?

Другой способ сделать это c++ - использовать комбинацию smart-pointer операторов & и *:

boost::shared_ptr foo_ptr(new foo());
c_library_function( &*foo_ptr);

Хотя лично shared-ptr я бы предпочел использовать shared-ptr метод get() (это действительно boost правильный ответ), одно из boostshared-ptr его преимуществ заключается c++ в том, что его можно использовать cpp с другими классами, которые boost перегружают operator* (разыменование smart-pointer указателя), но при этом не smart-pointers предоставлять метод get(). Это c++ может быть полезно, например, в boost шаблоне универсального класса.

c++

boost

smart-pointers

shared-ptr

2022-09-26T23:08:27+00:00