Có một số thư viện cho phép tôi dễ dàng và thuận tiện tạo ra các callback hướng đối tượng trong c + + không?Gọi lại hướng đối tượng cho C++?
ngôn ngữ Eiffel ví dụ có khái niệm "đại lý", mà ít nhiều công việc như thế này:
class Foo{
public:
Bar* bar;
Foo(){
bar = new Bar();
bar->publisher.extend(agent say(?,"Hi from Foo!", ?));
bar->invokeCallback();
}
say(string strA, string strB, int number){
print(strA + " " + strB + " " + number.out);
}
}
class Bar{
public:
ActionSequence<string, int> publisher;
Bar(){}
invokeCallback(){
publisher.call("Hi from Bar!", 3);
}
}
đầu ra sẽ là: Hi từ Bar! 3 Xin chào từ Foo! Vì vậy, đại lý cho phép để viên nang một thành viên chức năng vào một đối tượng, cung cấp cho nó cùng một số thông số gọi được xác định trước (Hi từ Foo), xác định các tham số mở (?), Và vượt qua nó cho một số đối tượng khác mà sau đó có thể gọi trễ rồi.
Vì C++ không cho phép tạo con trỏ hàm trên các hàm thành viên không tĩnh, có vẻ như không nhỏ để thực hiện điều gì đó dễ sử dụng trong C++. tôi tìm thấy một số bài viết với google trên callbacks đối tượng theo định hướng trong c + +, tuy nhiên, thực sự tôi đang tìm một số thư viện hoặc tập tin tiêu đề tôi chỉ đơn giản là có thể nhập khẩu cho phép tôi sử dụng một số cú pháp tương tự thanh lịch.
Bất kỳ ai cũng có một số mẹo cho tôi?
Cảm ơn!
Tôi không chắc rằng tôi hoàn toàn hiểu cú pháp của bạn nhưng 'boost :: bind' có thể được sử dụng để đóng gói cả hàm và hàm thành viên với giao diện thích hợp vào đối tượng. http://www.boost.org/doc/libs/1_44_0/libs/bind/bind.html#with_member_pointers –
hey! vâng tôi nghĩ đó là những gì tôi đang tìm kiếm. tiếc là tôi không thể biên dịch tăng cho iPhone (phát triển trên iPhone). tôi đọc rằng điều này cũng có thể làm với stl. ai đó có thể giải thích như thế nào? – Mat