首页 新闻 搜索 专区 学院

VC++ 函数指针问题

0
悬赏园豆:10 [已关闭问题] 关闭于 2018-10-22 11:40

以下这种函数指针的使用方式始终报错:

CMyClassA:

CMyClassA
class CMyClassA
{
private:
    void (*function)(int some);

public:
    ADoWork()
    {
        int age=10;
        function(age);
    }

    SetCallBack(void (* func)(int para));
    {
        function=func;
    }
}

CMyClassB:

CMyClassB
class CMyClassB
{
private:
    CMyClassA* a;

    void myMethod(int p)
    {
        MessageBox(_T("call myMethod."));
    }

public:
    CMyClassB()
    {
        a=new CMyClassA();
    }

    void DoSome()
    {
        a->SetCallBack(myMethod);
        a->ADoWork();
    }
}

请高人讲解VC++中函数指针的用法,比如在通知事件、委托、回调等时候。

当然上面的代码稍微改一下也可以,就是构造 CMyClassA 类的对象 a 的时候将当前实例(this)传给 CMyClassA,在 CMyClassA 的构造函数中将 CMyClassB 的 myMethod 函数赋值给函数指针。但这样岂不是将主动权交给了CMyClassA,从封装的角度讲,将CMyClassB暴露给了被调用方 CMyClassA。

本人对C#比较熟悉,至于委托、事件、回调函数的理解都没问题。

由于接触VC++不久,很多不解,请大师们解答,感谢!

Cage.Li的主页 Cage.Li | 初学一级 | 园豆:96
提问于:2013-04-23 19:13
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册