回调函数怎样调用啊???

bazzi2011 2012-02-22 02:58:47
在.ccp中定义一个回调:


void __stdcall Notify(int _iID,int _iState);


现在我要在一个普通的函数里面调用它,该怎么做呢?

int ClassXXX::Test()
{
//该如何调用Notify呢?直接调?还是再定义一个调用的函数之类的?
}



...全文
139 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
ppsharp 2012-02-22
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;

typedef int (__stdcall *Func) (int,int);

int Calc(int x, int y, Func func)
{
int sum;
sum = func(x, y);
return sum;
}

int _stdcall Add(int a, int b)
{
return a + b;
}

int _stdcall Sub(int a, int b)
{
return a - b;
}

int main()
{
int a, b;
cout<<"Please input the first integer:"<<endl;
cin>>a;
cout<<"Please input the second integer:"<<endl;
cin>>b;

int m, n;

m = Calc(a, b, Add);
n = Calc(a, b ,Sub);

cout<<a<<"+"<<b<<"="<<m<<endl;
cout<<a<<"-"<<b<<"="<<n<<endl;

system("pause");
return 0;
}


写了个例子,楼主可以看看,回调函数怎么用的
icerlion 2012-02-22
  • 打赏
  • 举报
回复
直接调用就是了。
你是想callback函数吧?这类函数是系统区调用的,不需要你手动调用。比如启动一个线程的函数,定时器函数等等
melos 2012-02-22
  • 打赏
  • 举报
回复
直接调用啊。
不过回调函数是你写给系统去调用的函数,你要去调用它干什么呢?
bazzi2011 2012-02-22
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 bazzi2011 的回复:]
引用 3 楼 ppsharp 的回复:
int ClassXXX::Test(Func func)
{
Func();
}

小写吧。[/Quote]

这不是大小写的问题。

首先这句代码就通不过 typedef void __stdcall (*Func) (int,int); 语法错误 : “(”

其次还要考虑参数的问题啊!
int ClassXXX::Test(Func func)
{
Func(); //这里不用填参数???}

luciferisnotsatan 2012-02-22
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 bazzi2011 的回复:]

引用 3 楼 ppsharp 的回复:
typedef void __stdcall (*Func) (int,int);

int ClassXXX::Test(Func func)
{
Func();
}

调用的时候就是:
ClassXXX a;
a.Test(Notify);


Test(Func func)再这样定义一个Test类???貌似这样会报错啊!
……
[/Quote]
int ClassXXX::Test(Func func)
{
Func();
}

小写吧。
bazzi2011 2012-02-22
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 ppsharp 的回复:]
typedef void __stdcall (*Func) (int,int);

int ClassXXX::Test(Func func)
{
Func();
}

调用的时候就是:
ClassXXX a;
a.Test(Notify);
[/Quote]

Test(Func func)再这样定义一个Test类???貌似这样会报错啊!
语法错误 : 标识符“Func”

该怎样定义这个Test函数呢?
赵4老师 2012-02-22
  • 打赏
  • 举报
回复
通常回调函数由操作系统或父进程调用。
如果真想自己调用回调函数,可以考虑将回调函数全部或部分功能独立出来写成另一个函数,然后在回调函数和正常流程中分别调用这个函数。
ppsharp 2012-02-22
  • 打赏
  • 举报
回复
typedef void __stdcall (*Func) (int,int);

int ClassXXX::Test(Func func)
{
Func();
}

调用的时候就是:
ClassXXX a;
a.Test(Notify);
vanxeger 2012-02-22
  • 打赏
  • 举报
回复
都是普通函数,直接调用不就好了?!
ppsharp 2012-02-22
  • 打赏
  • 举报
回复
把函数指针用作Test函数的参数,把 Notify 这个函数传进去

64,639

社区成员

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

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