#ifndef __TEST_CLASS_H__
#define __TEST_CLASS_H__
#include <map>
class TestClass
{
typedef void (TestClass::*Func) (int);
public:
TestClass();
~TestClass();
void Run();
protected:
void TestFirstFunc(int num);
void TestSecondFunc(int num);
private:
std::map<int,Func> m_funcMap;
};
#include <iostream>
#include "TestClass.h"
TestClass::TestClass()
{
m_funcMap.insert(std::make_pair<int,Func>(11,&TestClass::TestFirstFunc));
m_funcMap.insert(std::make_pair<int,Func>(22,&TestClass::TestSecondFunc));
}
TestClass::~TestClass()
{
}
void TestClass::Run()
{
Func pfun = m_funcMap[11];
(this->*pfun) (0);
(this->*m_funcMap[11]) (1);
(this->*m_funcMap[22]) (2);
(this->*m_funcMap[11]) (3);
(this->*m_funcMap[22]) (4);
}
void TestClass::TestFirstFunc(int num)
{
std::cout<<"TestFirstFunc="<<num<<std::endl;
}
void TestClass::TestSecondFunc(int num)
{
std::cout<<"TestSecondFunc="<<num<<std::endl;
}
#include <iostream>
#include "TestClass.h"
using namespace std;
int main()
{
TestClass mytest;
mytest.Run();
return 0;
}
运行结果:
TestFirstFunc=0
TestFirstFunc=1
TestSecondFunc=2
TestFirstFunc=3
TestSecondFunc=4