关于函数指针的调用---不会用阿,大哥们
#include <map>
using namespace std;
//---------------------------------------------------------------------------
//类声明
class CLS;
class A;
typedef void(A::*PF)(CLS*);
//---------------------------------------------------------------------------
//仅仅为了做参数用的一个类
class CLS
{
};
//---------------------------------------------------------------------------
class A
{
public:
A()
{
m_map["f1"] = &(A::f1);
m_map["f2"] = &(A::f2);
m_map["f3"] = &(A::f3);
m_map["f4"] = &(A::f4);
};
map<char*,PF> m_map;//存放函数指针的一个map
void f1(CLS*){};
void f2(CLS*){};
void f3(CLS*){};
void f4(CLS*){};
void f();
CLS *cls;
PF *p;
};
//---------------------------------------------------------------------------
class B
{
public:
map<char*,PF>* m_pmap;
CLS *pcls;
};
//---------------------------------------------------------------------------
static A *a = new A;
static B *b = new B;
main()
{
a->f();
a->p= &(*b->m_pmap)["f1"];
(a->p)(a->cls);//这一句出错信息:call of nonfunction
(*(a->p))(a->cls);//这一句出错信息:call of nonfunction
}