在以下代码中,我无法将临时对象作为函数的参数传递printAge
:
struct Person {
int age;
Person(int _age): age(_age) {}
};
void printAge(Person &person) {
cout << "Age: " << person.age << endl;
}
int main () {
Person p(50);
printAge(Person(50)); // fails!
printAge(p);
return 0;
}
我得到的错误是:
error: invalid initialization of non-const reference of type ‘Person&’ from an rvalue of type ‘Person’
我意识到这与将lValue传递给期望rValue的函数有关...是否可以通过使用std :: move或其他方式将lValue转换为rValue?我尝试采用常量参数,但这似乎不起作用。
只需使您的print函数接受您的论点即可const&
。从逻辑上讲这也是正确的,因为它不会修改您的论点。
void printAge(const Person &person) {
cout << "Age: " << person.age << endl;
}
实际的问题是相反的。您正在将临时值(rvalue)传递给需要左值的函数。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句