Tôi có một con trỏ tới một hàm thành viên được định nghĩa trong một lớp học, ví dụ:Calling con trỏ-to-hàm thành viên C++
class Example {
void (Example::*foo)();
void foo2();
};
Trong mã chính của tôi, tôi sau đó thiết lập foo như:
Example *a;
a->foo = &Example::foo2;
Tuy nhiên, khi tôi cố gắng gọi foo:
a->foo();
tôi nhận được lỗi thời gian biên dịch như sau: "lỗi: biểu trước ngoặc của cuộc gọi rõ ràng phải có (loại hàm trỏ tới) ". Tôi giả sử tôi nhận được cú pháp sai ở đâu đó, ai đó có thể chỉ ra cho tôi?
'làm việc (a -> * (a-> foo))() '- Tôi nghĩ? –
Thật không may, điều này không hoạt động. a -> * foo() trả về "error: foo is undefined" và a -> * (a-> foo)() đưa ra thông báo lỗi gốc. – wolfPack88
bạn cần parens xung quanh 'a -> * (a-> foo)' vì cách toán tử ưu tiên hoạt động –