Tôi có một lớp Menu tùy chỉnh được viết bằng C++. Để tách mã thành các hàm dễ đọc, tôi đang sử dụng Callbacks.Một cách hay để thực hiện Callbacks có thể sử dụng trong C++
Vì tôi không muốn sử dụng Singletons cho Trình chủ của Menu, tôi cung cấp một tham số (đích) khác sẽ được gọi lại làm tham số đầu tiên (một số cách giải quyết cho tham chiếu "này" bị thiếu) .
Đăng ký doanh nghiệp-Chữ ký
AddItem(string s, void(*callback)(void*,MenuItem*), void* target = NULL)
Ví dụ về Đăng ký doanh nghiệp
menu->AddItem(TRANSLATE, "translate", &MyApp::OnModeSelected);
Ví dụ về một Handler
/* static */
void MyApp::OnModeSelected(void* that, MenuItem* item) {
MyApp *self = (MyApp*)that;
self->activeMode = item->text;
}
Có bất cứ điều gì người ta có thể xem xét bẩn với phương pháp này? Có những cái tốt hơn không?
Bạn nên Bạn không nên sử dụng các phương thức thành viên tĩnh như gọi lại ở đây, bạn chỉ nên sử dụng các hàm được khai báo bên ngoài "C", bạn chỉ cần may mắn khi trình biên dịch bạn đang sử dụng (hiện tại) sử dụng cùng một phương thức để gọi các phương thức tĩnh Các chức năng này không được đảm bảo theo tiêu chuẩn –