我正在寻找一种方法来保存指向派生类的成员函数的指针。
例如:
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的函数)
谢谢
答案 0 :(得分:1)
只需使用static_cast
:
FunctionP theFunc = static_cast<FunctionP>(&B::Test);
Coliru:http://coliru.stacked-crooked.com/a/2cfed4926aed43db
但是,根据您的需要,使用std::function
和std::bind
可能会更好。