共享指针解引用错误 java家伙试图在我的头脑中找到C++,特别是共享指针。我正在使用点云库做一些表面处理。PCL库包含指示符STR,根据文档,它是std::vector上的共享指针

共享指针解引用错误 java家伙试图在我的头脑中找到C++,特别是共享指针。我正在使用点云库做一些表面处理。PCL库包含指示符STR,根据文档,它是std::vector上的共享指针,c++,boost,shared-ptr,operator-precedence,C++,Boost,Shared Ptr,Operator Precedence,如何从指针访问向量?我已经试着和你解除了联系 pcl::IndicesPtr sample(new std::vector<int>()); ... for (int i = 0; i < *sample.size(); i++) { ... } pcl::indicestr样本(新std::vector()); ... 对于(inti=0;i”而不是“.”吗? 对于(int i=0;i大小()它应该是(*sample).size()因为运算符。的优先级高于取消引用运算符*或

如何从指针访问向量?我已经试着和你解除了联系

pcl::IndicesPtr sample(new std::vector<int>());
...
for (int i = 0; i < *sample.size(); i++) { ... }
pcl::indicestr样本(新std::vector());
...
对于(inti=0;i<*sample.size();i++){…}
根据这里的文件。然后编译给我错误

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++) {
错误:“boost::shared_ptr”中没有名为“size”的成员;你是想用“->”而不是“.”吗?
对于(int i=0;i<*sample.size();i++){
我在这里做错了什么?

它应该是
(*sample).size()
,因为
运算符。
的优先级高于取消引用
运算符*
,或者只是
示例->大小()

它应该是
(*sample).size()
因为
运算符。
的优先级高于取消引用
运算符*
或者根据
运算符
只需
示例->大小()

的优先级高于
运算符*
。因此
*sample.size()
*(sample.size())相同
。这就是为什么编译器试图告诉您不能在
boost::shared\u ptr
上直接调用
size()

您可以添加括号来明确指定优先级,例如,
(*sample.size()
;或者按照编译器的建议,根据,
运算符将其更改为
sample->size()
的优先级高于
运算符*
。因此
*sample.size()
*(sample.size())相同
。这就是为什么编译器试图告诉您不能在
boost::shared\u ptr
上直接调用
size()


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

只需编写
(*sample.size()
)。哦,我不是一个noob。谢谢。或者:
std::for_each(sample->cbegin(),sample->->cend(),[](int I){…})
;只需编写
(*sample).size()
。哦,我不是一个noob。谢谢。或者:
std::for_each(sample->cbegin(),sample->cend(),[](inti){…})