基类指针的引用不能绑定到派生类的poiner?
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;
}
答案 0 :(得分:3)
基类指针的引用不能绑定到派生类的poiner?
它不能。但是,您正在尝试将 base 类指针引用绑定到临时 base 类指针(rvalue)。但由于它是非const引用,因此无法绑定到右值。
根据您的意图,您有两种选择。使用const引用,它可以绑定到rvalues。这延长了临时的使用寿命:
base * const &rp = (base*)p;
或者将引用绑定到左值:
base * b = p;
base * &rp = b;
答案 1 :(得分:1)
您可能想要
base& rp = *p;
或者,如果你真的想要一个指针的引用,你可以这样做:
base* tmp = p;
base*& rp = tmp;
答案 2 :(得分:1)
我不确定你是否想要
base* rp = (base*)p;