从类中返回只读二维数组

Return read-only 2-D array from class

本文关键字:只读 二维数组 返回      更新时间:2023-10-16

我有一个类,它包含一个大数组。我想将数组设为私有数组,但我需要从中读取大量数据,但要确保它永远不会被类外的任何东西更改。有没有什么方法可以引用数组,使其可以从中读取,但不能写入?

编辑:这个类将被分发,我想防止未经授权访问所有私人成员。这似乎使得任何类型的引用都是不可能的。

这样的功能可以吗?

class ReadOnlyArray
{
private:
    float mData[SIZE][SIZE];
public:
    float Get( int i, int j ) const { return mData[i][j]; }
};

是的,您可以返回对vector<vector <T>>的const引用(您使用的是向量,而不是自己分配内存,对吧)。

类似于:

class MyCLass
{
  private:
    vector<vector<T>> v;
    ...
  public:
    ...
    const vector<vector<T>>& getVector()  const { return v; }
};

将数组设为私有数组。创建公共函数以从数组中检索和返回数据。