我正在将Java程序转换为C++,并且体系结构要求我在某些点返回空指针。我有一个这样构造的指针:
auto p= std::make_unique< std::array< A, 3>>();
其中 A 的形式为:
class A
{
public:
double x = 0, y = 0;
A(const double x, const double y):
x(x), y(y)
{}
};
现在,我需要通过指针设置成员,所以我会想:
p[0].x += 1.0;
由于unique_ptr
具有取消引用[]
运算符,但失败并显示:
error: no match for 'operator[]' (operand types are 'std::unique_ptr<std::array<A, 3ull> >' and 'int')
我回顾了类似的问题,但我不清楚我想做的事情是否可能。[]
运算符是否仅适用于 c 样式声明的数组?
[]
运算符是否仅适用于 c 样式声明的数组?
是的,它仅支持阵列版本,即 unique_ptr<T[]>
,std::array
不计算在内。
您可以改用operator*
,例如
(*p)[0].x += 1.0;