代码如下:
#include <iostream>
using namespace std;
typedef void(*LPFUNCTION)(int data);
void registerConfigParser(LPFUNCTION lpfn){
lpfn(10);
}
class MyClass{
public:
MyClass(LPFUNCTION lpfn){
registerConfigParser(lpfn);
}
};
#define STATIC_MY_CLASS(fn) \
static MyClass myclass(fn)
static void printData(int data){
cout << "printData callled! the Data is:" << data << endl;
}
STATIC_MY_CLASS(printData);
void main(){
cout << "Main function called!\n";
system("pause");
}
运行截图如下:
程序的逻辑:
全局静态类STATIC_MY_CLASS(printData)
其实转化为:
MyClass myclass(printData)
这里是因为用了
#define。这里要注意"\"这个符号,连接符号(大佬们都喜欢用这个)
在MyClass的构造函数中调用了
registerConfigParser函数,他里面有个参数lpfn,类型为函数指针LPFUNCTION
给他传入int型的值,如lpfn(10)。
就可以进行调用了。