类成员函数指针写入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");
posted @ 2022-09-08 16:39  eastgeneral  阅读(18)  评论(0编辑  收藏  举报