C++ cannot bind non-const lvalue reference of type ‘Dog&’ to an rvalue of type ‘Dog’

void function(Dog & d){
  /**************
}

调用这个函数,如果传参一个右值对象,临时对象,则会出现这个问题
一个临时对象的引用,这怎么想都不合理

从该函数的定义上看,拿到dog之后 ,是可以对原本的dog进行修改的
但对一个临时对象进行修改是无意义的,所以会报错

解决方法是,在前面加一个const,或把引用去掉,函数内部会拷贝一份临时对象并绑定变量名变为左值

void function(const Dog & d){
  /**************
}
posted @ 2023-02-27 14:32  ecnu_lxz  阅读(46)  评论(0编辑  收藏  举报