关于函数指针的调用---不会用阿,大哥们

tommycpma 2005-05-27 04:28:54
#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

}
...全文
84 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
myy 2005-05-27
  • 打赏
  • 举报
回复
class 的非static成员函数比较特殊,应该用

typedef void(__closure *PF)(CLS*);

这种形式.

13,826

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧