函数指针指针调用成员函数 跨类
    函数指针跨类是指在一个类中定义函数指针,并在另一个类中使用该函数指针来调用该类中的函数。通过使用函数指针,可以实现类之间的解耦,使得代码更加灵活和可扩展。
    在C++中,函数指针的定义方式为:`返回值类型 (*函数指针名称)(参数列表)`,例如:
    ```
    int (*pFunc)(int, int); // 定义一个返回值为int,参数为两个int型的函数指针
    ```
    在一个类中定义函数指针可以在类的公有或私有部分,例如:
    ```c++
    class A {
    public:
    typedef int (*FuncPtr)(int, int); // 定义一个公有的函数指针类型
    void setFuncPtr(FuncPtr ptr) { m_pFunc = ptr; } // 设置函数指针
    private:
    FuncPtr m_pFunc; // 私有的函数指针成员变量
    };
    ```
    可以看到,通过`typedef`关键字定义了一个公有的函数指针类型`FuncPtr`,然后在类的公有部分提供了一个`setFuncPtr`函数来设置函数指针。在类的私有部分定义了一个私有的函数指针成员变量`m_pFunc`。
    在另一个类中使用函数指针可以通过函数指针作为参数传递到该类中的函数中,例如:
    ```c++
    class B {
    public:
    void callFunc(A::FuncPtr ptr) { ptr(1, 2); } // 使用函数指针来调用A类中的函数
    };
    ```
    可以看到,`callFunc`函数接受一个`A::FuncPtr`类型的参数,并使用该函数指针来调用A类中的函数。在使用时可以这样调用:
    ```c++
    A a;
    B b;
    a.setFuncPtr(&sum); // 设置函数指针
    b.callFunc(a.m_pFunc); // 使用函数指针来调用A类中的函数
    ```
    在上面的例子中,`sum`是一个在A类中定义的函数,通过`setFuncPtr`函数设置函数指针,然后通过`callFunc`函数来调用该函数。可以看到,通过函数指针跨类调用函数非常灵活和方便。