Tôi đang sử dụng C++ (không phải C++ 11). Tôi cần tạo một con trỏ tới một hàm bên trong một lớp. Tôi cố gắng thực hiện theo các bước sau:Tham chiếu đến chức năng thành viên không tĩnh phải được gọi là
void MyClass::buttonClickedEvent(int buttonId) {
// I need to have an access to all members of MyClass's class
}
void MyClass::setEvent() {
void (*func) (int);
func = buttonClickedEvent; // <-- Reference to non static member function must be called
}
setEvent();
Nhưng có lỗi: "Tham chiếu đến hàm thành viên không tĩnh phải được gọi". Tôi nên làm gì để tạo một con trỏ tới một thành viên của MyClass?
Bạn không thể có con trỏ hàm được gán cho hàm thành viên. Bạn phải sử dụng một con trỏ đến thành viên hoặc một hàm miễn phí. – imreal
Bạn có ý nghĩa gì với "con trỏ đến một thành viên"? Đối với "chức năng miễn phí", bạn có nghĩa là một chức năng bên ngoài một lớp học? Vâng, tôi biết rằng nó sẽ làm việc nếu tôi sẽ loại bỏ "MyClass ::" một phần từ định nghĩa "void MyClass :: buttonClickedEvent ..." nhưng tôi cần phải có quyền truy cập vào các thành viên của MyClass bên trong chức năng "buttonClickedEvent" .. – JavaRunner