Tôi đang cố gắng để vượt qua một std :: chức năng thông qua một phương pháp như vậy:C++ 0x std :: chức năng như một đối số phương pháp
class dispatch
{
public:
deliver(std::function<void (void)> task);
}
này hoạt động như mong đợi. Tuy nhiên tôi muốn chuyển đối số cho một số phương thức được cung cấp dưới dạng tác vụ nhưng không muốn tạo quá tải cho tất cả các hàm khác nhau < ...>.
ví dụ là nó ở tất cả có thể chỉ là để tạo ra một phương pháp như sau
deliver(std::function& task);
và chỉ gọi với
dispatch->deliver(bind(&Object::method, X));
hoặc
dispatch->deliver(bind(&Object::method, X, arg1, arg2));
vv ...
Cảm ơn cho mọi đầu vào. Nó sẽ xuất hiện lỗi thực sự của tôi là với các cuộc gọi để gửi-> cung cấp với các đối số bổ sung cũng là một cuộc gọi ràng buộc.
dispatch->deliver(bind(&Object::method1, X1, bind(&Object::method1, X2));
error: /usr/include/c++/v1/functional:1539:13: error: no matching function for call to '__mu_expand' return __mu_expand(__ti, __uj, __indices());
Thiếu ';' sau khai báo lớp học. :-) –