[英]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.