Mọi người cho mình hỏi, khi Component là 1 class được define như sau:
Thì trong hình dưới đây, nên dịch cú pháp này ntn (mình đang hiểu nó tạo ra 1 kiểu con trỏ hàm, trả về void nhận arguments cũng là void).
Các bạn gt giúp mình với, xin cảm ơn!
Mọi người cho mình hỏi, khi Component là 1 class được define như sau:
Thì trong hình dưới đây, nên dịch cú pháp này ntn (mình đang hiểu nó tạo ra 1 kiểu con trỏ hàm, trả về void nhận arguments cũng là void).
Các bạn gt giúp mình với, xin cảm ơn!
Handler
(*Handler)()
::*
(method) của dẫn xuất lớp Component
void
()
Nên sử dụng cú pháp using
mới:
using Handler = void (Component::*)();
hay
using Handler = auto (Component::*)() -> void;
Mình cảm ơn bác nhé,
cái này mới quá, mình k hiểu. Trước giờ khai báo con trỏ hàm chỉ đơn giản là void (*p_handler)(void * arg)
. Bác gt thêm giúp mình hiểu cái ::*
với ạ.
là để xác định rõ Handler
là con trỏ tới 1 member function chứ ko phải free function. Hàm trong C++ có 2 loại là free function là hàm bình thường như C, loại 2 là member function là hàm thuộc về 1 class/struct nào đó, trong C#/Java gọi là method/phương thức. Ở đây Handler
là con trỏ tới member function thì phải xác định rõ member function này thuộc về lớp nào, ở đây là lớp Component
vâng e cảm ơn bác nhé