std::array :通过智能指针访问元素的成员



我正在将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;

最新更新