c++ - 是否有解决方法来解决 C++ 中智能指针对指针算术的限制?

标签 c++ smart-pointers pointer-arithmetic

我正在开发一个项目,无法使用括号表示法,但必须对数组使用智能指针。然而,正如我发现的那样,智能指针不允许进行指针算术。有解决方法吗?

编辑:该项目是一个类(class),在项目规范中它说不能使用括号表示法,必须使用智能指针形式的动态分配数组。

最佳答案

unique_ptr 的特化是专门为了进行指针算术而发明的。使用“未知大小的数组”作为分配的类型。

示例:

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

要克服人为且毫无意义的限制“不能使用括号表示法”,请将 p[1] 更改为 *(p.get()+1)。但首先要确保你正确理解了这个限制——在我看来,没有一个头脑正常的人会要求这样的丑化。

关于c++ - 是否有解决方法来解决 C++ 中智能指针对指针算术的限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60367361/

相关文章:

c - 指针运算

c++ - L-Value,指针运算

c++ - 在函数 Qt C++ 中使用 UI 数组

c++ - 在 Slackware 14.2 64 位上使用 ACE lib 编译错误

c++ - 指针访问冲突? - C++

c++ - 如何更改 for 循环以便我可以使用 eof?

c++ - 原型(prototype)模式 C++ 中的智能指针

c++ - Visual Studio 2012 中的智能指针错误

c - 汇编寄存器算术?

c++ - C++ Protobuf添加一个已经分配的重复数字字段