c++ - unique_ptr 拥有的对象的索引运算符
问题描述
我正在做一个 c++ 项目。我需要放入一个 std::vector 不同的类。我发现(单个向量中的不同类的对象?)可以通过创建具有通用类型的类然后将指针指向向量来做到这一点。在这种情况下,我可以将指针转换为我需要的类型。这对我来说很清楚。
还提到,原则上不仅可以使用指针,还可以使用 smart_pointers,即std::vector<std::unique_ptr<TMyClass>>
. 这就是我的问题开始的地方。TMyClass
具有索引运算符 ( operator[]
)。
可以说我有std::vector<std::unique_ptr<TMyClass>> A
。我尝试TMyClass
像这样访问对象的元素,或者A[0][0]
但是当我编译时出现错误:A[0].get()[0]
(A[0])[0]
[bcc64 错误] 类型“value_type”(又名“std::unique_ptr<.....>”)不提供下标运算符
我如何告诉编译器第二个索引与TMyClass
object 而不是与unique_ptr
?如果有人向我解释如何在这种情况下访问元素,我将不胜感激。
解决方案
您需要先提取指针
A[0] //type: std::unique_ptr<TMyClass>&
然后从该指针中提取对象(指针)
*A[0] //type: TMyClass&
然后你可以在这个对象上使用你的重载运算符
(*A[0])[0]
推荐阅读
- bash - 逐行读取文件并稍后继续 bash
- r - 如何在其他两个变量相同的 R 条件下创建指标变量?
- ibm-watson - 为什么 Watson NLC 对训练(1024 个字符)和生产(2048 个字符)有不同的大小限制?
- c# - 发布时出现实体框架迁移错误
- regex - 从 SQL“CREATE TABLE”语句中提取某些列的正则表达式
- php - 每次访问者重新加载时,如何在我的网页上显示 .txt 文件中的随机文本?
- jquery - 将参数从 AJAX jquery 传递到节点 js
- .net - 无法通过 Outlook for Desktop 应用程序在 Gsuite 上配置的邮件 ID 触发外发邮件
- f# - F# Concat 两个元组而不解构
- r - Dplyr:对分组应用条件