error: const method that returns an array of pointers by reference

error: const method that returns an array of pointers by reference

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)
};

我将这个 class 称为 Board,它有两种方法 return 通过引用创建数组。

方法(2)报错:

qualifiers dropped in binding reference of type "const Tile *(&)[16]" to initializer of type "Tile *const [16]"

我通过将 const 写入方法 (1) 中的 return 类型来修复此错误,但它不适用于方法 (2)。

为什么会出现这个错误?

这个数组的元素类型

 Tile* tiles[16]

Tile *。由于成员函数是常量成员函数,因此该函数应该 return 通过引用常量元素的数组。那就是应该声明为

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

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