繁体   English   中英

unique_ptr 拥有的 object 的索引运算符

[英]Indexing operator of an object owned by unique_ptr

我正在研究 c++ 项目。 我需要放入一个 std::vector 不同的类。 我发现( 单个向量中的不同类的对象? )可以通过创建具有通用类型的类然后将指针指向向量来做到这一点。 在这种情况下,我可以将指针转换为我需要的类型。 这对我来说很清楚。

还提到原则上不仅可以使用指针,还可以使用 smart_pointers,即std::vector<std::unique_ptr<TMyClass>> 这就是我的问题开始的地方。 TMyClass具有索引运算符( operator[] )。

可以说我有std::vector<std::unique_ptr<TMyClass>> A 我尝试访问TMyClass object 的元素,例如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>&

然后从该指针(pointee)中提取 object

*A[0] //type: TMyClass&

然后你可以在这个 object 上使用你的重载运算符

(*A[0])[0] 

必须取消引用指针。 所以,我猜是(*A[0])[0] A[0]->[0] 不好看,但这是给你的指针

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM