c++ - 共享指针取消引用错误
问题描述
这里的 Java 家伙试图让我了解 C++,特别是共享指针。我正在使用点云库来做一些表面工作。IndicesPtr
根据文档,PCL库包含一个在std::vector
.
如何从指针访问向量?我试过取消引用
pcl::IndicesPtr sample(new std::vector<int>());
...
for (int i = 0; i < *sample.size(); i++) { ... }
根据此处的文档https://theboostcpplibraries.com/boost.smartpointers-shared-ownership。编译然后给我错误
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++) {
我在这里做错了什么?
解决方案
根据运算符的优先级,operator.
优先级高于operator*
。所以*sample.size()
是一样的*(sample.size())
。这就是编译器试图告诉您不能直接调用size()
a 的原因boost::shared_ptr
。
您可以添加括号以明确指定优先级,例如(*sample).size()
;或者按照编译器的建议,将其更改为sample->size()
.
推荐阅读
- javascript - 从动态下拉列表中获取选定的值(由 javascript 生成的选项到 ID)
- apache-kafka - 在滚动升级/重启期间,如何检测 kafka 代理何时“完成”?
- nativescript - Nativescript - 卸载框架
- html - 如何匿名从 Swift 中的 URL 获取 HTML 源代码?
- nuxt.js - 错误:更新 nuxt 到 v2.3.4 后的循环依赖
- intellij-idea - 在调试中禁用 PhpStorm 中的 vim 模式
- drools - 是否可以在流口水规则中返回异常?
- angular - 如何使用 *ngFor 和 *ngIf 循环多个 tr
- mysql - 如何在同一日期减去同一列中的两行?
- jenkins - jenkins Nexus 平台插件 3.x 未发生 Nexus 连接