在线等待的简单问题——在类中不能使用函数指针吗?

600000 2002-07-28 03:43:46
如何在类中使用函数指针呢?比如在类aaa中建立一个函数指针:
class aaa
{
void (*m_lpFunc)();
void bbb();
}
定义时是没有错误,但在其成员函数中使用时
void aaa::bbb()
{
m_lpFunc();
}
不能通过,错误提示为:error C2064: term does not evaluate to a function
而在其成员函数中换成下面的语法格式时
void aaa::bbb()
{
(*m_lpFunc)();
}
仍不能通过,错误提示为:error C2171: '*' : illegal on operands of type 'void (__cdecl *)(void)'
为什么会这样呢?好像没有什么错误,完全符合C++规范呀,是不是VC6有什么新的规定呢?
...全文
71 10 打赏 收藏 举报
写回复
10 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
600000 2002-07-28
EvilSword-----12
zhangdaqiang--6
winco---------12

分数已经加过了,不知道为什么没有显示出来呀?
  • 打赏
  • 举报
回复
600000 2002-07-28
谢谢上面所有朋友的帮忙!

我明白了,是我有点糊涂了,我在静态函数中调用当然应该使用静态的函数指针了!

我的问题已经解决了,开始加分!
  • 打赏
  • 举报
回复
600000 2002-07-28
To winco:
谢谢老兄的代码!
  • 打赏
  • 举报
回复
winco 2002-07-28
#include <iostream.h>
class aaa
{
public:
aaa()
{
cout<<"Constructor!"<<endl;
}

int bbb(int(*m_lpFunc)());

~aaa()
{
cout<<"Distructor!"<<endl;
}
private:
int (*m_lpFunc)();
};
int aaa::bbb(int (*m_lpFunc)())
{
return (*m_lpFunc)();
}
int i,j;
int max()
{
return i>j?i:j;
}
void main()
{
i=0;
j=100;
aaa dd;
cout<<dd.bbb(max)<<endl;

}
  • 打赏
  • 举报
回复
600000 2002-07-28
各位,没人知道了吗?
  • 打赏
  • 举报
回复
600000 2002-07-28
以上的两种方法都可以的!

但我还遇到了一个问题:
就是该如何为这个函数指针赋值呢?
我想定义一个函数,其参数就是要赋的函数地址值,又应该如何定义呢?
  • 打赏
  • 举报
回复
zhangdaqiang 2002-07-28
因为C++的类成员函数都被 加上了一个 this参数,故 你必须对函数
使用 static 修饰
  • 打赏
  • 举报
回复
600000 2002-07-28
恐怕是我理解错了吧!
我的确是在静态成员函数中调用的这个函数指针,不行的。

但我受此启发,将函数指针设置为静态的,结果却通过了,为什么?
  • 打赏
  • 举报
回复
600000 2002-07-28
TO EvilSword:

你是说只能在静态成员函数中才使用函数指针吗?
  • 打赏
  • 举报
回复
EvilSword 2002-07-28
能够使用,因为C++的类成员函数都被 加上了一个 this参数,故 你必须对函数
使用 static 修饰
  • 打赏
  • 举报
回复
相关推荐
发帖
VC/MFC

1.6w+

社区成员

VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
帖子事件
创建了帖子
2002-07-28 03:43
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……