微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决在类之间传递函数指针作为参数

如何将函数指针作为参数传递?例如,函数指针myFunPtr调用A时的参数,我需要此指针指向类funcB中的函数B

 #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;
}

解决方法

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

typedef void(*myFunPtr)(void);

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

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

Demo

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。