我正在将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样式声明的数组的[]
运算符吗?
答案 0 :(得分:2)
仅用于c样式声明的数组的
[]
运算符吗?
是的,它只支持阵列版本,即unique_ptr<T[]>
,std::array
不计算在内。
您可以改为使用operator*
,例如
(*p)[0].x += 1.0;