Trong đoạn mã sau, tôi không thể vượt qua một đối tượng tạm thời như là đối số cho printAge
chức năng:khởi không hợp lệ tham chiếu không const loại
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;
}
Các lỗi tôi nhận được là:
error: invalid initialization of non-const reference of type ‘Person&’ from an rvalue of type ‘Person’
Tôi nhận ra rằng đây là điều cần làm với việc chuyển một giá trị sang một hàm mong đợi rValue ... Có cách nào để chuyển đổi lValue thành rValue bằng cách sử dụng std :: move hay gì đó không? Tôi đã cố gắng tham gia một tham số không đổi, nhưng điều đó dường như không hoạt động.
Đó là cách khác xung quanh. Bạn đang chuyển một rvalue đến một hàm mong đợi một giá trị. Tham chiếu non-const lvalue không thể liên kết với rvalues, nhưng bạn có thể sử dụng tham chiếu 'const' lvalue thay thế. – juanchopanza
"Tôi đã thử dùng tham số không đổi, nhưng có vẻ như nó hoạt động." Vì vậy, bạn giải quyết vấn đề, nhưng quyết định loại bỏ các giải pháp bởi vì nó có vẻ làm việc? – molbdnilo
Rất tiếc, tôi đã để lại * không *! – jeffreyveon