我有2个类,我想通过回调将方法从一个传递到另一个!

看到我也希望使用void(* callBack)();来保存此方法的地址。

我曾经在C中执行此操作,但我不知道如何在c++中执行此操作;

#include <iostream>

using namespace std;

class A
{
    private:
        void (*callBack)(); //to hold the address of the method

    public:
        A();
        void setCallBack(void(*cB)());
        void useCallBack();
};


A::A()
{

}

void A::setCallBack(void(*cB)())
{
    callBack = cB;
}

void A::useCallBack()
{
    callBack();
}


class B
{
    private:
        A * Aguy;

    public:
        B();
        void someMethod();
        void otherMethod();
};

B::B()
{
    Aguy = new A();
}

void B::otherMethod()
{
    Aguy->setCallBack(someMethod);
    Aguy->useCallBack()
}

void B::someMethod()
{
    cout << "Hello. I'm from class b" << endl;
}

int main()
{
    B Bguy;
    Bguy.otherMethod();

    return 0;
}

最佳答案

有关详细信息,请参见c++ - <unresolved overloaded function type>

引用答案:



将静态放在someMethod上:

class B
{
    private:
        A * Aguy;

    public:
        B();
        static void someMethod();
        void otherMethod();
};

void B::otherMethod() {
    Aguy->setCallBack(B::someMethod);
    Aguy->useCallBack(); // adding missing semicolon
}

关于c++ - 将方法作为回调从一类传递到另一类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20037427/

10-11 18:29