| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1791 人关注过本帖
标题:[求助]如何调用成员函数指针数组
只看楼主 加入收藏
THE
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2007-6-30
收藏
 问题点数:0 回复次数:6 
[求助]如何调用成员函数指针数组

class c1 {
public:
c1 (int x1){
x=x1;
p[0]=c1::a1;
p[1]=c1::b1;
}
int (c1::*p[2]) (void);
int a1();
int b1();
void disp ();
private:
int x;
};

int c1::a1()
{
return x;
}

int c1::b1 ()
{
return 2*x;
}

void c1::disp ()
{
cout<<*p[0](); //error C2064: term does not evaluate to a function
}

void main()
{
c1 x (2);

x.disp ();

cout<<x.*p[1] (); //error C2065: 'p' : undeclared identifier
// error C2109: subscript requires array or pointer type
// error C2064: term does not evaluate to a function
}
编译时,两处调用成员函数指针数组元素出现错误,如何解决?谢谢

搜索更多相关主题的帖子: 指针 函数 成员 
2007-06-30 13:15
天下第二刀
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:157
专家分:0
注 册:2007-1-8
收藏
得分:0 

  看看,

[此贴子已经被作者于2007-6-30 15:15:09编辑过]


不知天堂有没有后门~~~
2007-06-30 15:11
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 

貌似没有办法啊。。。
函数指针调用函数,似乎只能用在全局函数或者静态函数上。。。
毕竟无法吧this指针指向的数据传给该函数地址。


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2007-06-30 16:27
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 

但是到是可以变通一下:

程序代码:
#include<iostream>
class c1 {
public:
c1 (int x1){
x=x1;
}
int a1();
int b1();
void disp ();
private:
int x;
};
int a1(c1* pc1)
{
return pc1->a1();
}
int b1(c1* pc1)
{
return pc1->b1();
}
int (*pf[2])(c1*)={a1,b1};

int c1::a1()
{
return x;
}

int c1::b1 ()
{
return 2*x;
}

void c1::disp ()
{
std::cout<<(pf[0])(this);
}

int main()
{
c1 x (2);
x.disp ();
return 0;
}



[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2007-06-30 16:32
THE
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2007-6-30
收藏
得分:0 

main函数中能不能直接调用成员函数指针数组的元素?

2007-06-30 19:25
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 

main函数中能不能直接调用成员函数指针数组的元素?

编译会出错,请看清楚3楼我的回复,你不能那样调用函数指针数组的元素,因为无法得知this指针给这样的函数指针。


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2007-06-30 19:42
THE
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2007-6-30
收藏
得分:0 

哦,看明白了,谢谢

2007-06-30 19:56
快速回复:[求助]如何调用成员函数指针数组
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.029192 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved