【问题标题】:error: const method that returns an array of pointers by reference错误:通过引用返回指针数组的 const 方法
【发布时间】: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 to Tile 是可能的,但可选。

标签: c++ arrays pointers constants return-by-reference


【解决方案1】:

这个数组的元素类型

 Tile* tiles[16]

Tile *。由于成员函数是一个常量成员函数,因此该函数应通过引用与常量元素返回数组。那就是它应该被声明为

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-28
    • 2016-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多