如何解决这个问题?非常量引用必须绑定到左值
How to solve this?non-const reference must bind to lvalue
基类指针的引用不能绑定到派生类指针?
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;
相关文章:
- 什么时候在C++中返回常量引用是个好主意
- 我想将一个对T类型的非常量左值引用绑定到一个T类型的临时值
- 为什么我可以通过引用修改常量返回
- 返回常量对象引用 (getter) 和仅返回字符串有什么区别?
- 将常量指针引用绑定到非常量指针
- 通过常量引用传递参数的矩阵模板类
- 按值捕获引用时出现非常量
- 在C++中使用非常量引用作为常量
- 具有常量引用参数的函数模板专用化
- 多个"常量引用"变量可以共享同一个内存吗?
- 为什么 STL 容器适配器堆栈中的 top 返回常量引用?
- 为什么按值传递QStringView比引用常量更快?
- 通过引用常量函数调用另一个类的非常量函数
- 构造常量对象与引用常量对象
- 引用“常量value_type”时出错
- 为什么可以在 for 语句中重新分配引用常量
- 程序反馈:命名循环索引和引用常量数据
- 堆还是栈?在c++中函数调用中引用常量字符串时
- 为什么常量结构数组在按名称引用常量结构时不放在 .rodata 中?
- 为什么编译器允许在函数中发送对迭代器的引用,该函数引用常量迭代器