有没有办法让函数指针指向对象方法呢?

zyq_123 2012-02-02 03:12:05
做成静态方法,由于继承以及一个类对应多个对象问题,因此,想请教一下,有没有办法让函数指针指向对旬方法呢?
...全文
164 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
zyq_123 2012-02-02
  • 打赏
  • 举报
回复
成员函数指针。
zyq_123 2012-02-02
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 jinhao 的回复:]
函数指针和成员函数指针是两码事。函数指针只能指向普通函数和类的静态成员函数。
如果你想要用函数指针那样的调用语法,去调用成员函数。你可以用函数对象,例如std::function或者自己写一个简单的只满足你需要的。或者用所谓thunk技术。
[/Quote]

搞个简单的std::function例子参考。
zyq_123 2012-02-02
  • 打赏
  • 举报
回复
Test test(2);
void (Test::*pFun)(void);
pFun = &Test::display;
(test.*pFun)();

=========================================

你这里好像是对象产生后再定义指针的?
Jinhao 2012-02-02
  • 打赏
  • 举报
回复
函数指针和成员函数指针是两码事。函数指针只能指向普通函数和类的静态成员函数。
如果你想要用函数指针那样的调用语法,去调用成员函数。你可以用函数对象,例如std::function或者自己写一个简单的只满足你需要的。或者用所谓thunk技术。
zyq_123 2012-02-02
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 qixing1115 的回复:]
C/C++ code

class Test
{
int a;
public:
Test(int a){this->a = a;}
void display();
};

void Test::display()
{
cout << a << endl;
}
int main(void)
{
Test test(2);
……
[/Quote]

感谢!
qixing1115 2012-02-02
  • 打赏
  • 举报
回复
class Test
{
int a;
public:
Test(int a){this->a = a;}
void display();
};

void Test::display()
{
cout << a << endl;
}
int main(void)
{
Test test(2);
void (Test::*pFun)(void);
pFun = &Test::display;
(test.*pFun)();
}
qixing1115 2012-02-02
  • 打赏
  • 举报
回复
class Test
{
int a;
public:
Test(int a){this->a = a;}
void display();
};

void Test::display()
{
cout << a << endl;
}
int main(void)
{
Test test(2);
void (Test::*pFun)(void);
pFun = &Test::display;
(test.*pFun)();
}
zyq_123 2012-02-02
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 qixing1115 的回复:]
引用楼主 zyq_123 的回复:
做成静态方法,由于继承以及一个类对应多个对象问题,因此,想请教一下,有没有办法让函数指针指向对旬方法呢?


[/Quote]

能不能做个简单的例子参考一下?
zyq_123 2012-02-02
  • 打赏
  • 举报
回复
更正:做成静态方法,由于继承以及一个类对应多个对象问题,因此,想请教一下,有没有办法让函数指针指向对旬方法呢?
上文中的“对旬方法”应为“对象方法”。
qixing1115 2012-02-02
  • 打赏
  • 举报
回复
[Quote=引用楼主 zyq_123 的回复:]
做成静态方法,由于继承以及一个类对应多个对象问题,因此,想请教一下,有没有办法让函数指针指向对旬方法呢?
[/Quote]
zyq_123 2012-02-02
  • 打赏
  • 举报
回复
我问的是函数指针能不能指向对象方法,再之怎样实现?一两句说不完那就三四句!先来一两句!
Jinhao 2012-02-02
  • 打赏
  • 举报
回复
这是很基础的知识,但是又不是一两句话就能说完的。你先百度,google吧,然后有其他的问题和不同的观点再开贴探讨
zyq_123 2012-02-02
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 demon__hunter 的回复:]
引用 2 楼 zyq_123 的回复:
引用 1 楼 jinhao 的回复:
std::function


什么意思?能不能具体一点?

百度 google 啊
[/Quote]

你就不能说几句吗?直接给答案!
机智的呆呆 2012-02-02
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zyq_123 的回复:]
引用 1 楼 jinhao 的回复:
std::function


什么意思?能不能具体一点?
[/Quote]
百度 google 啊
zyq_123 2012-02-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jinhao 的回复:]
std::function
[/Quote]

什么意思?能不能具体一点?
Jinhao 2012-02-02
  • 打赏
  • 举报
回复
std::function

64,663

社区成员

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

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