请教:函数指针,指向其他的类中的函数。 怎么在一个类里面,建立一个函数指针指向其他的某个类里面的某个函数两个不同的类 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 首先,你得定义一个指针类型,即函数指针#typedef void (*Func)();然后,在类A中声明和定义class A{...void FuncA();...}void A::FuncA(){;}再后,定义类Bclass B{...Func fun;...}你在A中把函数FuncA作为一个指针传递给类B中的fun,就可以在B中使用fun指针完全一样的调用A中的函数FuncA了。 嗯,我原来也是这么处理的。可是他说1>f:\projects\ppshibao\ppshibao\ppshibaodlg.cpp(92) : error C3867: “CppshibaoDlg::QuitPaoPaoShiBao”: 函数调用缺少参数列表;请使用“&CppshibaoDlg::QuitPaoPaoShiBao”创建指向成员的指针1>f:\projects\ppshibao\ppshibao\ppshibaodlg.cpp(92) : error C2440: “=”: 无法从“void (__thiscall CppshibaoDlg::* )(void)”转换为“PointFunc” // First declareclass abc;typedef void (abc::*LPFUNC)(int i);class abc{public: void test(int i); LPFUNC lpFunc;}; 最简单的办法是在类中传递void*指针,然后,force cast it.我想LZ的问题可能用friend类的方式解决更好. 指向成员函数的指针.示例程序:// VC.NET 2003 Ver7.1.3091#include "stdafx.h"class A{public: int Get100() {return 100;}};class B{public: int (A::*pFun)(void); void Print(A* pA) { int val = (pA->*pFun)(); printf("Val = %d\n",val); };};int _tmain(int argc, _TCHAR* argv[]){ A a; B b; b.pFun = A::Get100; b.Print(&a); return 0;}// 输出: Val = 100 一个想做程序员的人 VS2010编译的DLL为什么在Win7 32位注册失败? 求助:为什么我的线程序没有运行起来啊?谢谢! 100分 谁能为我翻译一下这篇文章! 各为大侠:有没有学习arx的比较基础的最好是关于arx2004的书 怎么使edit空间不能接受用户输入,就像vc下面的。。。。。。。谢谢 求前辈指导 vb问题 WIN32 listctrl 无法插入新项 哪里有ribbon样式开发详细的资料啊 ?msdn只介绍了拖控件,没有怎么使用的介绍。 获取自窗口的内容 小问题 关于在CView类中绘图问题
#typedef void (*Func)();然后,在类A中声明和定义
class A{
...
void FuncA();
...
}
void A::FuncA()
{
;
}
再后,定义类B
class B
{
...
Func fun;
...
}
你在A中把函数FuncA作为一个指针传递给类B中的fun,就可以在B中使用fun指针完全一样的调用A中的函数FuncA了。
他说1>f:\projects\ppshibao\ppshibao\ppshibaodlg.cpp(92) : error C3867: “CppshibaoDlg::QuitPaoPaoShiBao”: 函数调用缺少参数列表;请使用“&CppshibaoDlg::QuitPaoPaoShiBao”创建指向成员的指针
1>f:\projects\ppshibao\ppshibao\ppshibaodlg.cpp(92) : error C2440: “=”: 无法从“void (__thiscall CppshibaoDlg::* )(void)”转换为“PointFunc”
{
public:
void test(int i);
LPFUNC lpFunc;
};
我想LZ的问题可能用friend类的方式解决更好.
示例程序:// VC.NET 2003 Ver7.1.3091
#include "stdafx.h"class A
{
public:
int Get100() {return 100;}
};class B
{
public:
int (A::*pFun)(void);
void Print(A* pA)
{
int val = (pA->*pFun)();
printf("Val = %d\n",val);
};
};int _tmain(int argc, _TCHAR* argv[])
{
A a;
B b;
b.pFun = A::Get100;
b.Print(&a);
return 0;
}// 输出: Val = 100