在c ++中访问作为类成员的数组

时间:2015-03-20 01:05:45

标签: c++ arrays c++11

我有一个c ++类,它有一个私有数组成员。

class array_test
{
public:
    std::tuple<double*, int> get_vector_member();

private:
    double test_array[3];
};

在C ++ 11中,有一个更好的方法调用来获取double [],它不涉及将double作为指针。我担心我自己或其他人会删除指针并导致一些奇怪的未定义行为。

我希望我没有包含get_vector_member的实现是一个问题。

2 个答案:

答案 0 :(得分:3)

如何提供典型的C ++字段访问器函数,使用const和非const重载,返回对字段的引用?

class X
{
    double data[3];

public:
    // Accessors
    double (&get())[3] { return data; }
    const double (&get() const)[3] { return data; }
};

在C ++ 14中,这段代码更容易编写:

auto & get() { return data; }
const auto & get() const { return data; }

答案 1 :(得分:2)

您可以将其设为std::array。它们优于原始数组的一些原因:

然后通过引用返回:

class array_test
{
public:
    const std::array<double, 3>& get_array_member() const;

private:
    std::array<double, 3> test_array;
};