共享指针解引用错误 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){…})
;