簡體   English   中英

是否有解決 C++ 中智能指針的指針算術限制的解決方法?

[英]Is there a workaround to the limitation on pointer arithmetic with smart pointers in C++?

我正在處理一個項目,無法使用括號表示法,但必須對數組使用智能指針。 但是,正如我發現的那樣,智能指針不允許進行指針運算。 有解決方法嗎?

編輯:該項目是一門課程,在項目規范中說不能使用括號表示法,必須使用智能指針形式的動態分配數組。

unique_ptr是專門為進行指針運算而發明的。 使用“大小未知的數組”作為分配類型。

例子:

std::unique_ptr<int[]> p(new int[5]);
p[1] = 8;
std::cout << p[1];

為了克服人為和無意義的限制“不能使用括號表示法”,請將p[1]更改為*(p.get()+1) 但首先要確保你正確理解了這個限制——在我看來,沒有人會要求這樣的丑化。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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