首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >共享指针解引用错误

共享指针解引用错误
EN

Stack Overflow用户
提问于 2018-07-14 09:04:37
回答 2查看 581关注 0票数 0

这里的爪哇人试图让我的头脑了解C++,特别是共享的指针。我正在使用点云库来做一些表面工作。PCL库包含IndicesPtr,根据文档,它是std::vector上的一个共享指针。

如何从指针访问向量?我试过取消与

代码语言:javascript
运行
复制
pcl::IndicesPtr sample(new std::vector<int>());
...
for (int i = 0; i < *sample.size(); i++) { ... }

根据这里的文档,https://theboostcpplibraries.com/boost.smartpointers-shared-ownership。编译给了我错误。

代码语言:javascript
运行
复制
error: no member named 'size' in 'boost::shared_ptr<std::__1::vector<int, std::__1::allocator<int> > >'; did you mean to use '->' instead of '.'?
    for (int i = 0; i < *sample.size(); i++) {

我在这里做错什么了?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-14 09:07:26

运算符优先认为,operator.operator*具有更高的优先级。所以*sample.size()*(sample.size())是一样的。这就是为什么编译器试图告诉您不能在size()上直接调用boost::shared_ptr的原因。

您可以添加括号来显式指定优先级,例如(*sample).size();或者按照编译器的建议,将其更改为sample->size()

票数 3
EN

Stack Overflow用户

发布于 2018-07-14 09:06:38

它应该是(*sample).size(),因为operator .比取消引用operator *具有更高的优先级,或者仅仅是sample->size()

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51336953

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档