/*
* File: main.cpp
* Author: Vicky.H
*
*/
#include <iostream>
void f1() {
std::cout << "f1" << std::endl;
}
void f2() {
std::cout << "f2" << std::endl;
}
class A {
public:
void (*setF1(void (*f)())) () {
f1 = f;
}
static void (*setF2(void (*f)())) () {
A::f2 = f;
}
void doF1(){
if(f1 != 0) f1();
}
static void doF2() {
if(f2 != 0) A::f2();
}
private:
void (*f1)(); /**成员函数指针*/
static void (*f2)(); /**静态成员函数指针*/
};
void (*A::f2)() = 0; /**静态成员函数指针的初始化*/
/*
*
*/
int main(void) {
A a;
a.setF1(f1);
a.doF1();
std::cout << "---------------------------" << std::endl;
a.setF1(f2);
a.doF1();
std::cout << "---------------------------" << std::endl;
a.setF2(f1);
A::doF2();
std::cout << "---------------------------" << std::endl;
A::setF2(f2);
A::doF2();
return 0;
}
f1
---------------------------
f2
---------------------------
f1
---------------------------
f2