C++ 由Log日志输出理解回调函数

  关于回调函数的概念,之前有写过(传送点),这里不再赘述。

  本文结合Log日志输出,进一步理解回调函数的执行过程。

  首先附上demo的可运行程序代码(下载传送点),运行环境为VS2015+Qt5.8.0,不一样的自行修改即可,旨在帮助初学者走通程序,理解过程,也不用在后文中粘大段的代码...


  回调的两个主体为Test类和Log类,在Log类中定义函数指针类型:

typedef void(*Callback)(LogLevel level, const char *msg);

  传递函数指针给Log类是发生在main中,main中的回调函数如下:

void logCallback(LogLevel level, const char *msg) {
	logTest::instance->showLogMsg(msg);
}

  Test类作为显示及控制层,通过信号与槽实现外界触发:

void logTest::on_button_1_clicked() {
	LOGD("Parameter = %d", count);
	count++;
}

进而使Log类达成调用条件,调用回调函数指针,将结果(即输出内容)返回给主体,而并不关心主体接下来会用自己传回去的结果做什么,主体接收到输出内容,在界面中显示,即完成了Log日志输出这一过程:

void logTest::showLogMsg(const char *msg)
{
	ui.textBrowser->append(msg);
}


效果图:


猜你喜欢

转载自blog.csdn.net/u012043391/article/details/76505296