草庐IT

c++ - "non-const lvalue reference to type cannot bind"引用错误(类型&)但指针错误(类型*)

coder 2024-02-17 原文

我收到此错误“输入‘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_NOOCell 类型的对象。您的第一个示例是获取它的地址,并尝试使用生成的指针来初始化引用。引用不是从指针初始化的,而是从对象本身初始化的:

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/

有关c++ - "non-const lvalue reference to type cannot bind"引用错误(类型&)但指针错误(类型*)的更多相关文章

随机推荐