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

标签 c++ arrays c++11 pointers syntax

我正在将 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 风格声明的数组?

最佳答案

Is the [] operator for c-style declared arrays only?

是的,仅支持阵列版本,即 unique_ptr<T[]> , std::array不计算在内。

您可以使用operator*相反,就像

(*p)[0].x += 1.0;

关于c++ - std::array :通过智能指针访问元素的成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43905221/

相关文章:

c++将time_t转换为字符串并再次返回

c++ - 传递和更新结构数组

java - 读取和遍历 JSON 文件

c++11 - std::getline 和 UTF16 (LE) 文件流 - 不工作

c++ - 我可以禁止在对象实例上调用静态方法吗?

c++ - 使用制表符和空格读入文件

c++ - 迭代器 VS const_iterator,与 distance() 一起使用

javascript - 如何将空数组添加到对象数组?

c++ - 在 cmake 中混合 C 和 C++ 源代码

c++ - 使用算法查找自定义数据 vector 中的最大值和最小值