!!!请问如何把类的成员函数的指针赋给函数指针

dancingelephant 2003-09-12 05:20:29
请问如何把类的成员函数的指针赋给函数指针?
...全文
67 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
smilewang 2003-09-18
  • 打赏
  • 举报
回复
成员函数指针在使用时要和具体的对象进行绑定的.例子如下

myclass myObject,*pObject;
pObject=&myObject;

(myObject.*pFunc)();
(pObject->*pFunc)();
dancingelephant 2003-09-16
  • 打赏
  • 举报
回复
HaiFen(小石头) 讲的没错,可以正常使用

不过smilewang(急速传说)所讲的
class myclass{
int func(){return 0;}
};
=========================
int (myclass::*pFuc)()=0;
pFunc=&myclass::func;
编译可以通过,但是再怎么通过这个函数指针调用这个函数呢
我在后面加int i=pFunc();
在BCB6下面会有"Call of nonfunction"的错误
是我调用的不对还是什么问题?
mechgoukiteng 2003-09-15
  • 打赏
  • 举报
回复
一般情况下

一般的函数指针只有4byte
而成员函数指针往往会有20bytes

kenryHuang 2003-09-15
  • 打赏
  • 举报
回复
可以assign的吧,不过调用的时候注意,多传一个Object* 进去了
Yssss1980 2003-09-15
  • 打赏
  • 举报
回复
主要是要类型匹配
static的mf可以和赋给一般的函数指针
TianGuangZao 2003-09-15
  • 打赏
  • 举报
回复
静态成员函数不带隐含式参数“this”。因此,可以将其参数中的地址当作是普通函数的指针来使用。
如果要从静态成员函数中访问对象的数据成员,显式传入对象的地址即可。例如:

class Car
{
private:
int x;
public:
int get_x();
static void func(Car * pthis); // 静态成员函数
void func2(); // 非静态成员函数
};

void Car::func(Car * pthis)
{
int y = pthis->get_x(); // 访问对象的成员函数
}
Nemo1314 2003-09-15
  • 打赏
  • 举报
回复
同意smilewang(急速传说);
当最好这样说明:
class myclass{

int func(){return 0;}
};
=========================
typedef int (myclass::*pFuc)();
pFunc pm=0
pm=&myclass::func
HaiFen 2003-09-14
  • 打赏
  • 举报
回复
如果是类的静态成员函数可以直接赋值;一般成员函数必须使用成员函数指针,如smilewang(急速传说) 所讲
class A
{
public:
static int fun();
};

int (*pFun)() = &A::fun;
nmgpy 2003-09-14
  • 打赏
  • 举报
回复
想想也是不可以的,成员函数里面难免要用到成员变量。赋值个一个函数指针,和类没有任何关系成员变量的值谁赋呀。
smilewang 2003-09-14
  • 打赏
  • 举报
回复
普通的函数指针是不可以的.
但成员函数指针可以.
class myclass{
int func(){return 0;}
};
=========================
int (myclass::*pFuc)()=0;
pFunc=&myclass::func;

这里pFunc就是一个成员函数指针.
sevecol 2003-09-14
  • 打赏
  • 举报
回复
不行的.
jp311 2003-09-14
  • 打赏
  • 举报
回复
不行
成员函数的原型始终都有一个this参数
成员函数的指针和函数指针的类型不匹配
dancingelephant 2003-09-14
  • 打赏
  • 举报
回复
自己顶啊

64,646

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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