错误 C2101:常量'&'

error C2101: '&' on constant

本文关键字:常量 C2101 错误      更新时间:2023-10-16

我有以下代码:

std::map<size_t,Cell&> m_cellMap;

当Cell定义如下时:

class Cell
    {
      public:
        Cell(int x = 0,int y = 0) : m_x(x),m_y(y) { }
      private:
        int m_x;
        int m_y;
        /// class members and methods
    };

我不能编译下面的代码:

Cell c;
m_cellMap[0] = c;

获取错误:error C2101: '&' on constant出了什么问题?怎样才能解决?

谢谢

不能在标准容器中保存引用,使用指针代替:

std::map<size_t,Cell*> m_cellMap;
Cell c;
m_cellMap[0] = &c;

不能使用std::map来引用。引用不具有std::map映射到的值必须具有的属性。

尝试创建std::map<size_t, Cell*>,并执行m_cellMap[0] = &c;

如果您不想处理原始指针(并且您确实不想这样做),那么您可以使用std::reference_wrapper

std::map<size_t,std::reference_wrapper<Cell>> m_cellMap;

如果你这样做,那么你需要避免使用[]操作符。

执行以下操作插入映射

m_cellMap.insert(std::make_pair(0, c));

如果您使用指针而不是引用,那么您需要管理您创建的Cell对象的生命周期。