从我的对象返回静态数组

时间:2018-06-10 15:39:15

标签: c++ arrays static

具有

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

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

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

请参阅@ How to return a static array pointer 但是这种语法似乎不适用于成员函数,它无法编译 也尝试了

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

但我不认为这是一个很好的实践。

1 个答案:

答案 0 :(得分:2)

您总是可以返回指向第一个元素的指针,就像您完全安全一样。

更好的解决方案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; }