我收到此错误“输入‘Cell’的非常量左值无法使用此代码绑定(bind)到‘Cell *’类型的临时对象:
class RegionHolder
{
public:
RegionHolder(Region& Region1):m_RegionCellNOO(&(Region1.m_NOO))
~RegionHolder();
protected:
Cell & m_RegionCellNOO; // difference is here
};
但不是这个:
class RegionHolder
{
public:
RegionHolder(Region& Region1):m_RegionCellNOO(&(Region1.m_NOO))
~RegionHolder();
protected:
Cell * m_RegionCellNOO; // difference is here
};
我不明白这个问题,我真的很想使用引用而不是指针。
谢谢
最佳答案
您忘记向我们展示定义,但大概 Region1.m_NOO 是 Cell 类型的对象。您的第一个示例是获取它的地址,并尝试使用生成的指针来初始化引用。引用不是从指针初始化的,而是从对象本身初始化的:
RegionHolder(Region& Region1):m_RegionCellNOO(Region1.m_NOO) {}
// ^ no & ^^ don't forget that
使用引用而不是指针有一个警告:它们不可赋值,因此您的类也不可赋值。通常这不是问题;但是如果你确实需要你的类是可分配的,那么你需要使用指针来代替。
关于c++ - "non-const lvalue reference to type cannot bind"引用错误(类型&)但指针错误(类型*),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14754355/