我有一个c ++类,它有一个私有数组成员。
class array_test
{
public:
std::tuple<double*, int> get_vector_member();
private:
double test_array[3];
};
在C ++ 11中,有一个更好的方法调用来获取double [],它不涉及将double作为指针。我担心我自己或其他人会删除指针并导致一些奇怪的未定义行为。
我希望我没有包含get_vector_member的实现是一个问题。
答案 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
。它们优于原始数组的一些原因:
front
和back
成员函数轻松访问元素。==
,!=
和<
。fill
会员功能。然后通过引用返回:
class array_test
{
public:
const std::array<double, 3>& get_array_member() const;
private:
std::array<double, 3> test_array;
};