类成员函数指针写入map里怎么才能调用它呢?转载
#include<iostream>
#include<string>
#include<map>
using namespace std;
class Base
{
public:
virtual void func(string msg) = 0;
};
class Child1 : public Base
{
public:
void func(string msg)
{
cout << "child1 :" + msg << endl;
}
};
class Child2 : public Base
{
public:
void func(string msg)
{
cout << "child2 :" + msg << endl;
}
};
int main()
{
typedef void(Base::*pfunc)(string msg);
map<int, pfunc> m_map;
m_map[0] = (void(Base::*)(string msg))(&Child1::func);
m_map[1] = (void(Base::*)(string msg))(&Child2::func);
/*
这里调用m_map[0]()和m_map[1]()
*/
getchar();
return 0;
}
Child1 c;
(c.*m_map[0])("oops");