如何解决这个问题?非常量引用必须绑定到左值

How to solve this?non-const reference must bind to lvalue

本文关键字:引用 常量 绑定 非常 何解决 解决 问题      更新时间:2023-10-16

基类指针的引用不能绑定到派生类指针?

class base
{
};
class derived : public base
{
};
int main()
{
    derived va;
    derived *p = &va;
    base * &rp = (base*)p;    //wrong, non-const reference must bind to lvalue
    return 0;
} 
基类指针

的引用不能绑定到派生类指针器?

不能。但是,您正在做的是尝试将类指针引用绑定到临时类指针 (rvalue)。但由于它是非常量引用,因此它不能绑定到右值。

根据您的意图,您有两种选择。使用常量引用,该引用可以绑定到右值。这延长了临时的生存期:

base * const &rp = (base*)p;

或者将引用绑定到左值:

base * b = p;
base * &rp = b;

你可能想做

base& rp = *p;

或者,如果你真的想要对指针的引用,你可以这样做:

base* tmp = p;
base*& rp = tmp;

我不确定你是否想做

 base* rp = (base*)p;