访问作为c++中某个类的成员的数组
accessing arrays that are a member of a class in c++
我有一个c++类,它有一个私有数组成员。
class array_test
{
public:
std::tuple<double*, int> get_vector_member();
private:
double test_array[3];
};
在C++11中,有一个更好的方法调用来获得double[],它不需要将double作为指针。我担心我自己或其他人会删除指针,并导致一些奇怪的未定义行为。
我希望我没有包含get_vector_member的实现是个问题。
提供典型的C++字段访问器函数,使用常量和非常量重载,返回对字段的引用,怎么样?
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; }
您可以将其设置为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;
};
相关文章:
- 是否可以将结构数组别名为结构成员数组?
- C++:初始化 constexpr 构造函数中的成员数组
- 使用带有参数包的数组的成员数组初始化类
- C++ 在析构函数调用之前删除的动态成员数组
- 初始化在类类型 #define 中定义的非静态成员数组,不带默认 ctor
- 指向具有不同大小的成员数组的指针
- 用另一个 constexpr 数组对成员数组进行大括号初始化
- 对象成员数组C++默认初始化
- 如何在构造函数中的类成员数组中分配数组值,而无需使用STD库
- 将类成员数组组合到单个数组时性能下降
- 如何将数据从公共方法添加到同一类中的私有成员数组中?
- 如何在C 中的派生类中分配数据成员数组
- C 集合构建器中类成员数组的2D数组大小
- 初始化不可复制、不可移动、显式构造类型的成员数组
- C 指针可以指向字符串文字的静态成员数组
- 成员数组位于何处
- 将对象成员数组与字符串进行比较
- 如何在 c++ 中从对象数组中获取数据成员数组
- 声明模板会员参考另一个类的模板成员数组
- C 初始化成员数组