又一个C++问题

[复制链接]
查看11 | 回复3 | 2010-1-15 00:12:38 | 显示全部楼层 |阅读模式
void MY_CLASS::test(void){
func_pfm(add, x);}这里有个问题啊,add是一个函数来的,它不是变量,你起码也得add(val),至于那个val你自己决定在哪里输入吧,还有问题的话在百度hi我吧。
回复

使用道具 举报

千问 | 2010-1-15 00:12:38 | 显示全部楼层
//不知道这样是不是你想要的结果#include using namespace std;class MY_CLASS{public: int x; int inc; voidadd(int &val) {val+=inc;}; void test(void);};void func_pfm(MY_CLASS * pt,void (MY_CLASS::*func) (int& in), int& val){ (pt->*func)(val);}void MY_CLASS::test(void){ func_pfm(this,&MY_CLASS::add, x);}int main ( int argc, char *argv[] ){ void func_pfm(void (MY_CLASS::*func) (int& in), int& val); MY_CLASS c1; c1.inc=5; c1.x=3; cout<<c1.x<<endl; c1.test(); cout<<c1.x<<endl; return 0;}
回复

使用道具 举报

千问 | 2010-1-15 00:12:38 | 显示全部楼层
add是类的成员方法,由于类的封装,从外部不能直接调用 楼上的方法正解,可以试试
回复

使用道具 举报

千问 | 2010-1-15 00:12:38 | 显示全部楼层
额。。。我的水平有限能够想到的方法都被LZ给排除了。。。。按照LZ的要求基本上是无法实现的指针func和add()的类型不兼容,因为它们有不同的调用规范。因此不能将被调用者的地址赋值给指针func,尽管两者有相同的返回值和参数列。建议找一些关于函数指针的资料阅读一下,应该很快能找到最优的解决方式,你是对需求最了解的人,找一些资料之后就知道怎么去权衡,如何去修改了,如果有什么好的方法希望可以分享一下,或者交流一下,祝你早日解决问题。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行