具有
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);
}
但我不认为这是一个很好的实践。
答案 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; }