簡體   English   中英

共享指針解除引用錯誤

[英]Shared pointer dereferencing error

這里的Java專家試圖使我了解C ++,特別是共享指針 我正在使用點雲庫來做一些表面工作。 PCL庫包含IndicesPtr ,根據文檔, IndicesPtrstd::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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM