error:通过引用返回指针数组的const方法


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(。

为什么会出现这种错误?

此数组的元素类型

Tile* tiles[16]

是CCD_ 3。由于成员函数是一个常量成员函数,因此该函数应通过引用常量元素来返回数组。也就是说,它应该像一样声明

Tile* const (&getTiles() const)[16]{return tiles;}

也就是说,您不能为存储在数组中的指针分配新值。