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

问题描述 投票:0回答:1

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

编辑:该项目用于一门课程,并且在项目规格中它表示不能使用括号符号,并且必须使用智能指针形式的动态分配数组。

c++ smart-pointers pointer-arithmetic
1个回答
0
投票

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

示例:

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

要克服人为的和毫无意义的限制,即“不能使用括号符号”,请将p[1]更改为*(p.get()+1)。但是,首先要确保您正确理解了限制-在我看来,在他们的正确思维中没有人可以要求这种丑化。

© www.soinside.com 2019 - 2024. All rights reserved.