关于数据同步,窗口同步之类
最近经常遇到关于数据同步或者说窗口同步之类的问题。比如在对话框A中,点击按钮之后弹出对话框B。在对话框B做了某个操作之后,对话框A想立即知道或者知道之后做出某些反应。对于类似这样的问题,一般第一反应应该就是想到用发消息的方式来处理,但是有时候用发消息这种方式会很麻烦,特别是这两个对话框不在一个项目中,或者他们都只是很底层的一个对话框的时候。这个时候可以用C++中类的继承,多态来解决这个问题。大致的思路如下:
1.定义一个抽象类作为基类(其实不是抽象类也行);
1 class Base 2 { 3 virtual void event()=0; 4 }
这里的事件event就是对话框A要做出的反应
2.定义对话框A
class A:public Base { virtual void event(); }
这里让A继承Base,并自己写好关于event的实现,就是具体做出什么反应。
3.定义对话框B
class B { void event1(Base *p); }
这里将基类Base的指针作为形参,在实际调用的时候将A的指针传进来即可。这个传参的过程可以放到构造函数中,也可以直接放到具体事件中。
void B::event1(Base* p) { p->event(); }
这里就类似于反馈给A了,让A做出反应。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步