将boost :: shared_array <char>强制转换为boost :: shared_array <const char>

Joa*_*son 6 c++ boost casting smart-pointers

我怎样才能施放boost::shared_array<char>boost::shared_array<const char>

Kir*_*sky 6

由于shared_array没有add_ref方法,您可以按如下方式模拟它:

struct MagicDeleter {
  MagicDeleter( boost::shared_array<char> ptr ) : ptr(ptr) {};
  template<typename T> void operator()(T*) {} 
protected:
  boost::shared_array<char> ptr;
};

...

boost::shared_array<char> orig_ptr( some_val );
boost::shared_array<const char> new_ptr( orig_ptr.get(), MagicDeleter(orig_ptr) );
Run Code Online (Sandbox Code Playgroud)