【发布时间】:2021-12-21 12:06:03
【问题描述】:
class Board{
private:
Shape shapes[100];
Tile* tiles[16];
public:
const Shape (&getShapes() const)[100]{return shapes;}; // (1)
const Tile* (&getTiles() const)[16]{return tiles;}; // (2)
};
我创建了这个名为 Board 的类,它有两个方法通过引用返回一个数组。
方法(2)报错:
限定符在“const Tile *(&)[16]”类型的绑定引用与“Tile *const [16]”类型的初始化程序中删除
我通过将const 写入方法 (1) 中的返回类型来修复此错误,但它不适用于方法 (2)。
为什么会出现这个错误?
【问题讨论】:
-
使用
std::array,你所有的问题都会消失。 -
你 const 限定了指向的类型,但你需要 const 限定指针类型。
Tile* const (&getTiles() const)[16]{return tiles;};。 const toTile是可能的,但可选。
标签: c++ arrays pointers constants return-by-reference