功能:在类的外部调用类内部的私有函数
工具:unordered_map和函数指针
代码:
#include <unordered_map>
#include <iostream>
class CFunction{
public:
CFunction(){
map[0]=&CFunction::fun1;
map[1]=&CFunction::fun2;
map[2]=&CFunction::fun3;
}
~CFunction(){}
public:
std::unordered_map<char,bool(CFunction::*)(int)>map;
private:
bool fun1(int a)
{
std::cout<<"function 1: a is "<<a<<std::endl;
return true;
}
bool fun2(int a)
{
std::cout<<"function 2: a is "<<a<<std::endl;
return true;
}
bool fun3(int a)
{
std::cout<<"function 3: a is "<<a<<std::endl;
return true;
}
};
int main()
{
bool (CFunction::*pfunc[3])(int);
CFunction cf;
for (char i=0;i<3;i++)
{
pfunc[i]=cf.map[i];
}
for (char i=0;i<3;i++)
{
(cf.*pfunc[i])(i);
}
system("pause");
return 0;
}
main函数也可以采用如下的简写方法
int main()
{
CFunction cf;
for (char i=0;i<3;i++)
{
(cf.*cf.map[i])(i);
}
system("pause");
return 0;
}