这里的爪哇人试图让我的头脑了解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++) {我在这里做错什么了?
发布于 2018-07-14 09:07:26
运算符优先认为,operator.比operator*具有更高的优先级。所以*sample.size()和*(sample.size())是一样的。这就是为什么编译器试图告诉您不能在size()上直接调用boost::shared_ptr的原因。
您可以添加括号来显式指定优先级,例如(*sample).size();或者按照编译器的建议,将其更改为sample->size()。
发布于 2018-07-14 09:06:38
它应该是(*sample).size(),因为operator .比取消引用operator *具有更高的优先级,或者仅仅是sample->size()。
https://stackoverflow.com/questions/51336953
复制相似问题