Có vấn đề gì với việc thực hiện đóng cửa như vậy (bị đánh cắp từ hack python) không?C + + đóng hack
void function(int value) {
struct closure {
closure(int v = value) : value_(value) {}
private: int value_;
};
closure c;
}
Khi điều tra thêm, nó xuất hiện trong các hàm thành viên, biến cục bộ không thể được sử dụng làm giá trị mặc định, nhưng biến đối tượng có thể.
Đó là những gì hầu hết các ngôn ngữ khác làm sau hậu trường khi bạn nắm bắt biến cục bộ có chức năng cục bộ. Ví dụ, dịch ngược mã C# bằng cách sử dụng các đại biểu ẩn danh và các biến bị bắt. –
Bạn cần chuyển giá trị cho hàm tạo một cách rõ ràng: đối số mặc định của hàm không thể là biến cục bộ. Quy tắc đó dành cho các hàm _all_, không chỉ các hàm thành viên. –
@ James, cảm ơn tôi không biết các quy tắc rất tốt – Anycorn