以下这种函数指针的使用方式始终报错:
CMyClassA:
class CMyClassA { private: void (*function)(int some); public: ADoWork() { int age=10; function(age); } SetCallBack(void (* func)(int para)); { function=func; } }
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++不久,很多不解,请大师们解答,感谢!