我正在开发一个项目,无法使用括号表示法,但必须对数组使用智能指针。然而,正如我发现的那样,智能指针不允许进行指针算术。有解决方法吗?
编辑:该项目是一个类(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/