关于shared ptr:C ++ shared_ptr数组类型访问

C++ shared_ptr array type access

我正在为SQL数据库制作一个包装器,我返回的对象是shared_ptr。我想支持数组类型访问(即row["column"]而不是row->get("column"))。shared_ptr存储的对象支持数组类型访问,但当然shared_ptr不支持。我应该如何处理shared_ptrs,我需要延长课程吗?


最明显的是在shared_ptr中添加一个operator[]。这意味着定义您自己的共享指针重用std::shared指针,并让[]操作符按您想要的方式工作。

这可以通过派生共享的指针(注意:共享指针不是多态对象,所以不要在同一个上下文中混合std::和您的指针,这样您就可以重用它们的接口)快速而肮脏地完成。

如果您是一个"如果析构函数不是虚拟的就不要派生"风扇,那么您可以将std::shared_ptr嵌入到yourptr中,并重写yourptr中的shared_ptr接口,授权您必须保留的功能。