1

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

4

1 回答 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 回答