Sau nhiều năm AS3, tôi đang cố gắng tìm hiểu lại C++. Tài liệu tham khảo vẫn cho tôi phù hợp.Không thể chuyển kết quả của hàm thành tham chiếu
Hãy xem xét các chức năng sau:
#include <cstdio>
#include <list>
void f(std::list<int>& v) {
for (std::list<int>::iterator i = v.begin(); i != v.end(); ++i)
printf("Hello %d\n", *i);
}
std::list<int> get(void) {
std::list<int> list;
list.push_back(0);
return list;
}
Bây giờ, cách làm như sau:
std::list<int> l = get();
f(l);
là tốt, nhưng f(get())
sẽ tạo ra các lỗi sau:
"no matching function for call to 'f'", "candidate function not viable: no known conversion from `'std::list<int>' to 'std::list<int>&' for 1st argument"
Tại sao vậy ? Có phải vì kết quả của một hàm là vô hình const
?
Đối với một lần tôi thích thông báo lỗi của gcc đối với tiếng kêu: số: st2: : danh sách> '' –