前言
回调函数的使用场景,当内部逻辑不知道用户的类型时,让用户自己提供对应数据类型的函数。
代码
#include<iostream>
using namespace std;
/// <summary>
/// 万能打印函数。用户调用
/// </summary>
/// <param name="data">数据指针</param>
/// <param name="custom_print_func">针对该数据类型的打印函数</param>
void print(void* data, void(*custom_print_func)(void*))
{
custom_print_func(data);
}
struct Person
{
public:
Person(const char name[], int age) :_age(age) {
strcpy_s(this->_name, name);
}
char _name[64];
int _age;
};
void printStruct(void* data)
{
// 将接收数据转成person类型指针
Person* pPerson = (Person*)data;
cout << "name: " << pPerson->_name
<< ", age: " << pPerson->_age << endl;
}
int main()
{
Person hablee = Person("hablee", 22);
// 对于调用端来说,只需要传进对的数据和对应的打印函数即可
print(&hablee, printStruct);
return 0;
}