Tôi muốn gọi thực hiện lớp cơ sở của một hàm ảo bằng cách sử dụng con trỏ hàm thành viên.Gọi định nghĩa lớp cơ sở của hàm thành viên ảo với con trỏ hàm
class Base {
public:
virtual void func() { cout << "base" << endl; }
};
class Derived: public Base {
public:
void func() { cout << "derived" << endl; }
void callFunc()
{
void (Base::*fp)() = &Base::func;
(this->*fp)(); // Derived::func will be called.
// In my application I store the pointer for later use,
// so I can't simply do Base::func().
}
};
Trong mã trên, việc triển khai lớp dẫn xuất của func sẽ được gọi từ callFunc. Có cách nào tôi có thể lưu một con trỏ hàm thành viên trỏ đến Base :: func, hoặc tôi sẽ phải sử dụng using
theo một cách nào đó?
Trong ứng dụng thực tế, tôi sử dụng boost :: bind để tạo đối tượng hàm boost :: trong callFunc mà sau này tôi sử dụng để gọi func từ một phần khác của chương trình. Vì vậy, nếu tăng :: ràng buộc hoặc tăng :: chức năng có một số cách để có được xung quanh vấn đề này cũng sẽ giúp đỡ.
Bản sao có thể có của [C++: Con trỏ tới phiên bản đơn hình của hàm thành viên ảo?] (Https://stackoverflow.com/questions/5064614/c-pointer-to-monomorphic-version-of-virtual-member-function) –