c++ - 从我的对象返回静态数组
问题描述
有
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);
}
但我不认为这是一个好的做法。
解决方案
您始终可以返回指向第一个元素的指针,就像您所做的那样,这是非常安全的。
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; }
推荐阅读
- r - 无法从意外符号从 GitHub 下载包
- javascript - 通过javascript删除空格并在单词之间添加破折号
- python - 尝试将稀疏df保存到hdf5时,获取'SparseDtype'对象没有属性'itemsize'?
- python - 如何加快python中非线性优化的多次迭代?
- python - TypeError: print() 接受 0 个位置参数,但给出了 1 个(高中版)
- jquery - 远程 link_to 请求的是 html 而不是 js
- c++ - 为什么 printf 输出浮点 1.45 有一位小数,而 1.445 有两位小数在不同的行为中?
- python - 如何将python中的对象与整数进行比较
- java - RecyclerView 中不显示数据
- java - 两个 javafx Integer Spinner 双向绑定:为什么绑定不可靠?