首页 > 解决方案 > 从我的对象返回静态数组

问题描述

class Foo {
public:
  static constexpr size_t WIDTH = 10;
  static constexpr size_t HEIGHT = 20;

private:
  int _data[HEIGHT][WIDTH];
}

我想从这个类的成员函数中获取我的变量 _data,但我找不到好的原型。

请参阅@如何返回静态数组指针 ,但此语法似乎不适用于成员函数,无法编译。
也试过

int **getData() {
  return static_cast<int **>(_data);
}

但我不认为这是一个好的做法。

标签: c++arraysstatic

解决方案


您始终可以返回指向第一个元素的指针,就像您所做的那样,这是非常安全的。

IMO 更好的解决方案是使用std::array,与 C 样式数组不同,它可以被复制。

另一种方法是返回对数组的引用:

auto& getData() { return _data; }

没有auto它会是这样的:

int (&get())[HEIGHT][WIDTH] { return _data; }

你总是可以让它变得漂亮using

using RefToArray = int(&)[HEIGHT][WIDTH];
RefToArray get() { return _data; }

推荐阅读