[英]Shared pointer dereferencing error
這里的Java專家試圖使我了解C ++,特別是共享指針 。 我正在使用點雲庫來做一些表面工作。 PCL庫包含IndicesPtr
,根據文檔, 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++) {
我在這里做錯了什么?
它應該是(*sample).size()
因為operator .
比取消引用operator *
或僅具有sample->size()
優先級更高。
根據運算符優先級 , operator.
具有比operator*
高的優先級。 因此*sample.size()
與*(sample.size())
。 這就是為什么編譯器試圖告訴您不能直接在boost::shared_ptr
上調用size()
。
您可以添加括號以明確指定優先級,例如(*sample).size()
; 或者按照編譯器的建議,將其更改為sample->size()
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.