共享指针取消引用错误
Shared pointer dereferencing error
这里的Java家伙试图让我了解C++,特别是共享的指针。我正在使用点云库来做一些表面工作。PCL 库包含IndicesPtr
根据文档,它是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())
一样.这就是为什么编译器试图告诉你你不能直接在boost::shared_ptr
上调用size()
。
您可以添加括号以明确指定优先级,例如(*sample).size()
;或者按照编译器的建议,将其更改为sample->size()
.
它应该(*sample).size()
,因为它operator .
比取消引用operator *
具有更高的优先级,或者只是sample->size()
。
相关文章:
- 如何修复此错误:未定义对"距离(浮点数,浮点数,浮点数,浮点数,浮点数)"的引用
- 我的项目不会像"undefined reference to `grpc::g_core_codegen_interface'"那样使用未定义的引用错误进行编译
- 对C宏的未定义引用,但在定义它时会出现重新定义错误
- C++引用错误
- 已定义函数时出现 G++ "未定义的引用"错误
- 错误:使用通用引用的声明冲突
- 链接 cmake 时出现未定义的引用错误
- 错误:未定义对'oboe::AudioStreamBuilder::openStream(oboe::AudioStream**)'的引用
- 链接器错误:未定义对"Reference_Genome::seq[abi:cxx11]"的引用
- C++ 中的编译错误:未定义对"主"的引用 collect2:错误:ld 返回 1 个退出状态
- 错误:无法解析对重载函数的引用;你的意思是调用它吗?
- 在 gtest 中初始化堆栈上的引用变量的隔离错误
- 运行时错误:引用绑定到类型为"int"的空指针
- 隐式重新解释引用时强制转换,没有警告/错误
- 只有级联分类器会发出未定义的引用错误
- 错误:未定义对cv::cudacodec::createVideoReader的引用
- 模板流运算符重载错误:引用初始化无效,与basic_istream和basic_ifstream之间的差异有关
- 对于我的 ComplexNumber 中的某些方法,我得到了一个奇怪的未定义错误引用.cpp,不过我对模板很陌生
- 从对象调用成员对象,错误:引用非常量值的初始值必须是左值
- Qt并发错误:引用非静态成员