我正在为SQL数据库包装,返回的对象是shared_ptr
。
我想支持数组类型的访问(即row["column"]
而不是row->get("column")
)。 shared_ptr
存储的对象支持数组类型的访问,但是shared_ptr
当然不支持。
我应该如何使用shared_ptrs
做到这一点,我需要扩展该类吗?
最佳答案
最明显的是将operator[]
添加到shared_ptr
。
这意味着要重用std::shared_ptr并让[]运算符按照您想要的方式定义您自己的shared_ptr。
这可以通过派生shared_ptr来快速而肮脏地完成(注意:shared_ptr不是多态对象,因此请不要在同一上下文中混淆std::和您的std::,以便您可以重用它们的接口(interface))。
如果您是“不要推导析构函数不是虚拟的”风扇,那么您可以将std::shared_ptr嵌入yourptr
中,然后用yourptr
one重写shared_ptr接口(interface),委托(delegate)您保留的功能。
关于c++ - C++ shared_ptr数组类型访问,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11609020/