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

时间:2014-09-30 08:17:19

标签: c++ boost delegates

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

例如:

class A
{
public:
    typedef void (A::*FunctionP) (int a);
};

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

};

以下代码无法编译.. 还有另一种方法吗? (使用模板可能,或者提升)

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

谢谢

1 个答案:

答案 0 :(得分:1)

只需使用static_cast

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

Coliru:http://coliru.stacked-crooked.com/a/2cfed4926aed43db

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

相关问题