在 类 之间传递函数指针作为参数

Pass a function pointer as an argument between classes

我们如何将函数指针作为参数传递?例如,函数指针 myFunPtr 是调用 class A 时的参数,我需要此指针指向 class [=15= 中的函数 funcB ]

 #include <iostream>


typedef void(*myFunPtr)(void);

class A {
public:
    A(myFunPtr ptr);
    virtual ~A();
    myFunPtr funptr;
};

A::A(myFunPtr ptr){
    std::cout << "Constructor A \n";
    funptr = ptr;
}

A::~A(){}

 
///////////////
class B {
public:
    B();
    virtual ~B();
    void funcB();
};

B::B(){
    std::cout << "Constructor B \n";
    A *objA = new A(funcB);
}

B::~B(){}

void B::funcB(){
    std::cout << " call B::funcB \n";
}

///////////////

int main(){
     B *objB = new B();
     delete objB;
        
    return 0;
}

这是指向自由函数(不是 class 成员函数)的函数指针类型:

typedef void(*myFunPtr)(void);

这是一个B成员函数指针类型:

typedef void(B::*myFunPtr)(void);

Demo

这是另一个 Demo,它将调用 B 中的成员函数。为此,指向 B 的指针和指向 B 成员函数的指针存储在 A.