传递给类函数函数指针的问题

Golden_Shadow 2011-06-02 02:45:37
想知道关于这个话题的尽可能多的事情.
100分奉上了,仅代表我求知的心情.
希望大牛不吝赐教,把经验告诉我.
...全文
115 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ryfdizuo 2011-06-02
  • 打赏
  • 举报
回复
稍微难点的类成员函数指针。http://blog.csdn.net/chenjiazhou/archive/2005/09/02/470323.aspx
tr1,boost中的仿函数也可以,tr1::function, boost::function
ryfdizuo 2011-06-02
  • 打赏
  • 举报
回复
举个简单例子:

#include <iostream>
using namespace std;

class information {
public:
typedef void(*PFuncInt)(int, int);

PFuncInt myPfunc; // 定义成员函数指针

void setPFunc(PFuncInt myPf)
{
myPfunc = myPf;
cout << typeid(myPf).name() << endl;
}

void CallPFunc() { myPfunc(3, 4); }
};
void test(int size, int buf)
{
cout << "MyTest (" << size << ", " << buf << ")"<< endl;
}

int main()
{
information f1;
f1.setPFunc(test); //设置成员函数指针
f1.CallPFunc(); //调用

system("PAUSE");

return 0;
}
luciferisnotsatan 2011-06-02
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 luciferisnotsatan 的回复:]

http://topic.csdn.net/u/20110426/09/cfb00657-13ce-46cc-beae-fd273355a618.html?seed=1265018333&r=72982840#r_72982840
[/Quote]
这帖子里讲了,怎么声明非static的类成员函数指针。
luciferisnotsatan 2011-06-02
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20110426/09/cfb00657-13ce-46cc-beae-fd273355a618.html?seed=1265018333&r=72982840#r_72982840
  • 打赏
  • 举报
回复
去搜索下 this指针
就想叫yoko 2011-06-02
  • 打赏
  • 举报
回复
类的成员函数由于多了一个this指针的参数

不可将类static函数与类成员函数指针相互赋值,相反,可以将static成员函数赋给一般的函数指针
nakedavril 2011-06-02
  • 打赏
  • 举报
回复

template<typename T>
class MemberFunctionSlot : public SlotFunctorBase
{
public:
//! Member function slot type.
typedef bool(T::*MemberFunctionType)(const EventArgs&);

MemberFunctionSlot(MemberFunctionType func, T* obj) :
d_function(func),
d_object(obj)
{}

virtual bool operator()(const EventArgs& args)
{
return (d_object->*d_function)(args);
}

private:
MemberFunctionType d_function;
T* d_object;
};

64,662

社区成员

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

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