保存指向派生类的成员函数的指针

Save a pointer to member function of derived class

本文关键字:成员 指针 函数 派生 保存      更新时间:2023-10-16

我正在寻找一种方法来保存指向派生类的成员函数的指针。

例如:

class A
{
public:
    typedef void (A::*FunctionP) (int a);
};
class B : A 
{
public:
    void Test(int a)
    {
        //Do stuff
    }
    B()
    {
        FunctionP theFunc = &B::Test;
    }
};

以下代码未编译。。有别的办法吗?(可能使用模板,或增强)

(Btw类A是一个抽象类,它的一个实现调用保存为FunctionP的函数)

感谢

只需使用static_cast:

FunctionP theFunc = static_cast<FunctionP>(&B::Test);

科利鲁:http://coliru.stacked-crooked.com/a/2cfed4926aed43db

不过,根据您的需要,使用std::functionstd::bind可能会更好。