对类(对象)之间通信的理解(qt信号与槽的模拟实现)C++

绪论

作为计算机科学出生的学生,学习任何一门技术都要知其然并知其所以然

qt信号与槽的机制用起来确实很丝滑,但是如果我们是框架的开发者,怎么去实现这个功能呢?

我的思考

要能够让一个对象发出动作时,另一个对象能够感受到并发出相应的动作,那么肯定要让另一个对象能感知到(无论是直接感知还是间接感知),我所想到的方法有以下几种。

  • 回调方法:类中设置函数指针,当执行某一动作时,让该函数指针指向的函数也执行。

  • 设置中间类:设置一个类专门用于实现两个函数的绑定,然后通过这个类来调用这两个函数,这样也能实现。

  • 设置消息中间件:当一个类调用方法时,想发送一个消息,另一个类循环监听这个是否有消息,如果有则执行。

模拟实现函数回调

#include <string>
#include <iostream>
class KView;
class KButton
{
public:
    KButton(const std::string& text) :m_text(text) {};
​
    // 设置回调函数
    void setCallback(KView* v, void (KView::* callback)(const std::string& text))
    {
        m_v = v;
        m_callback = callback;
    }
​
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值