Nhờ dịch cú pháp C++

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).

image

Các bạn gt giúp mình với, xin cảm ơn!

  • Handler
  • là một con trỏ hàm (*Handler)()
  • ứng với member function ::* (method) của dẫn xuất lớp Component
  • trả về void
  • có danh sách tham số là ()

Nên sử dụng cú pháp using mới:

using Handler = void (Component::*)();

hay

using Handler = auto (Component::*)() -> void;
3 Likes

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

9 Likes

vâng e cảm ơn bác nhé

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?