c++ - 将 boost::shared_array<char> 转换为 boost::shared_array<const char>

标签 c++ boost smart-pointers casting

如何转换 boost::shared_array<char>boost::shared_array<const char>

最佳答案

由于 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) );

关于c++ - 将 boost::shared_array<char> 转换为 boost::shared_array<const char>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1846656/

相关文章:

c++ - 使用迭代器向后迭代

java - 上下文切换的 native 线程无法附加到 JVM

c++ - 使用 boost::asio::streambuf 的代码导致段错误

serialization - 如何序列化 boost::interprocess::containers::vector

c++ - 在具有智能指针的类上正确实现复制构造函数和等于运算符

c++ - PythonQt 的智能指针

c++ - 什么是智能指针,我应该什么时候使用它?

c++ - 如何避免头文件中定义的变量出现 LNK2005 链接器错误?

c++ - 可以作为 C++ 中方法参数的所有类的名称

c++ - 非静态成员函数,为每个对象创建生成一份机器代码?