看不懂一段代码?帮解释下,谢谢

icosagon 2006-11-16 10:32:20
void ABMainWindow::setupMenuBar()
{
WidgetMenuPtr file = itsMainMenu->appendPopup( _T( "&File" ) );
file->appendItem( 1, _T( "&New" ), & ABMainWindow::menuEventHandler );
file->appendItem( 2, _T( "&Open" ), & ABMainWindow::menuEventHandler );
}

void ABMainWindow::menuEventHandler( WidgetMenuPtr menu, unsigned item )
{
switch ( item )
{
case 1 :
setupCentralWidget();
break;
case 2 :
{
WidgetLoadFile dlg = createLoadFile();
SmartUtil::tstring path = dlg.showDialog();
if ( path.size() > 0 )
{
setupCentralWidget();
itsCentral->load( path );
itsFilename = path;
}
}
break;
}
return;
}

一个无返回值函数当另一个函数的参数??哪的技术?boost?不太懂,哪位大侠能解释下,谢谢
...全文
304 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
OOPhaisky 2006-11-16
  • 打赏
  • 举报
回复
一个无返回值函数当另一个函数的参数??哪的技术?boost?不太懂,哪位大侠能解释下,谢谢
------------------------------------------------------------------------------------
无返回值的函数也是函数,把它传递给另一个函数当成参数,这其实是函数指针在传递。

void test(){ cout << "test" << endl; }
void foo(void (*pf)()){ pf(); }
现在可以将函数test传递给foo:
foo(test);//输出"test"
注意,此处是将函数(其实是函数指针)传递给另外一个函数,而非把函数调用结果传递给另外一个函数。
taodm 2006-11-16
  • 打赏
  • 举报
回复
楼主,您能不能先找本书看看什么叫指向函数的指针?
meric 2006-11-16
  • 打赏
  • 举报
回复
回调函数是无疑的,至于要加&是不是file->appendItem()的第二个参数是 **型的?没有用过wxWidgets做开发,你可以自己去查看一下这个参数类型
icosagon 2006-11-16
  • 打赏
  • 举报
回复
请问 & ABMainWindow::menuEventHandler 是如何得到参数的?为什么前面还要加个& ?不明白回调函数实现的机制,能不能帮解释下?
taodm 2006-11-16
  • 打赏
  • 举报
回复
函数指针没用过?
回调函数的讲法没听过?
街坊跳舞 2006-11-16
  • 打赏
  • 举报
回复
MASK
icosagon 2006-11-16
  • 打赏
  • 举报
回复
谢谢以上各位,baidu了下,原来并不是我想像中的那样复杂
icosagon 2006-11-16
  • 打赏
  • 举报
回复
回调函数是不是相当于两个函数名的递归调用??

64,662

社区成员

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

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