멤버 함수 포인터를 사용하여 가상 함수의 기본 클래스 구현을 호출하려고합니다. FUNC의 파생 클래스 구현 위 코드에서 함수 포인터가있는 가상 멤버 함수의 기본 클래스 정의를 호출합니다.
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().
}
};
는 callFunc 호출한다. Base :: func를 가리키는 멤버 함수 포인터를 저장할 수있는 방법이 있습니까? 아니면 어떤 식 으로든
using
을 사용해야합니까?
실제 응용 프로그램에서는 boost :: bind를 사용하여 callFunc에서 boost :: function 개체를 만들었습니다.이 개체는 나중에 내 프로그램의 다른 부분에서 func를 호출하는 데 사용됩니다. boost :: bind 또는 boost :: function에 도움이 될이 문제를 해결하는 방법이 있다면.
가능한 복제본 [C++ : 가상 멤버 함수의 단일 형 버전에 대한 포인터?] (https://stackoverflow.com/questions/5064614/c-pointer-to-monomorphic-version-of-virtual-member-function) –