我正在为 SQL 数据库制作一个包装器,我返回的对象是shared_ptr
.
我想支持数组类型的访问(即row["column"]
代替row->get("column")
)。存储的对象shared_ptr
支持数组类型访问,但当然shared_ptr
不支持。
我应该如何做到这一点shared_ptrs
,我需要扩展课程吗?
问问题
273 次
1 回答
2
最明显的是添加一个operator[]
to shared_ptr
。这意味着定义您自己的 shared_ptr 重用 std::shared_ptr 并让 [] 运算符按照您想要的方式工作。
这可以通过派生 shared_ptr 以一种快速而肮脏的方式完成(注意:shared_ptr 不是多态对象,所以不要在同一上下文中混淆 std:: 和你的,这样你就可以重用它们的接口)。
如果您是“如果析构函数不是虚拟就不要派生”的粉丝,那么您可以将 std::shared_ptr 嵌入其中,yourptr
并将 shared_ptr 接口重写为yourptr
一个,委托您必须保留的功能。
于 2012-07-23T08:58:43.757 回答