我正在为SQL数据库打包,我返回的对象是shared_ptr
。
我想支持阵列类型访问(即row["column"]
而不是row->get("column")
)。对象shared_ptr
存储支持数组类型访问,但当然shared_ptr
不支持。
我应该怎么做shared_ptrs
,我需要延长课程吗?C++ shared_ptr数组类型访问
回答
最明显的是将operator[]
添加到shared_ptr
。 这意味着定义你自己的shared_ptr重用std :: shared_ptr并让[]运算符以你想要的方式工作。
这可以通过派生shared_ptr以快速和肮脏的方式完成(注意:shared_ptr不是多态对象,所以不要混淆std ::和你在同一个上下文中,以便你可以重用他们的接口) 。
如果你是一个球迷,“如果析构函数不是虚拟的不派生”,比它是由你来嵌入的std :: shared_ptr的在yourptr
,并重写的shared_ptr接口yourptr
一个,委派功能你必须保留。
我希望避免重写接口,但看到它的析构函数不是虚拟的,我想我没有太多的选择。出于好奇,你知道为什么标准库函数不是虚拟的吗?这是一种表演吗? – user1520427 2012-07-23 09:07:57
因为它们不适用于“多态性”。问题是,OOP粉丝认为derivationm仅适用于OOP。但是,这是他们的错,而不是谁的来源。请参阅http://stackoverflow.com/a/10478845/924727或http://stackoverflow.com/a/11202368/924727 – 2012-07-23 09:33:56
伟大的回复,谢谢你的链接。 – user1520427 2012-07-23 10:08:10
- 1. 无法访问数组返回类型
- 2. 通过类访问C++基元数组
- 3. ARM程序集:访问C类型的数组元素struct
- 4. 如何访问类obect类型的访问类对象类型的C++
- 5. 的std :: shared_ptr的Deletor类型
- 6. 通过shared_ptr访问calloc'd数据
- 7. 访问2013数据类型
- 8. VBA访问数据类型
- 9. 访问类型
- 10. C++访问数组元素
- 11. 访问目标C数组
- 12. C#循环访问数组
- 13. 访问数组类构件
- 14. 访问类型参数的参数化类型
- 15. 无法链访问的元组类型
- 16. C中的数组类型?
- 17. 访问两种不同类型数组的问题
- 18. C++的unordered_map的访问值类型
- 19. 如何访问C#MessageHeader具体类型
- 20. c#类属性的泛型访问
- 21. C++:带标记类型访问的元组
- 22. 类型数组的问题
- 23. C++超类数组尚未访问子类方法?
- 24. 在Python中对字符数组进行类型转换或访问char数组
- 25. 访问类型为
- 26. 如何更改C++中继承类型的访问类型?
- 27. C++数组类的问题
- 28. SWIG:使用std :: map访问器与shared_ptr?
- 29. 具有多种类型的类数组?如何访问数组中的一个类型?
- 30. 类型数组
@BoBTFish:我似乎记得operator []必须是一个meber ... – 2012-07-23 08:49:52
正确,我只是坚持认为那是第一个想法。现在我测试了一下,发现它不起作用,我删除了这个建议。 – BoBTFish 2012-07-23 08:56:46
(* row)[“column”] – 2012-07-23 08:58:01