typedef Screen& (Screen::*Action)();

WhatCanIdoing 2002-11-09 11:12:41
typedef existing_type new_name

typedef Screen& (Screen::*Action)();

Screen 是类名

想知道上面那个是 existing_type (Screen&) ;那个是 new_name (Action)

(Screen::*Action)() 是什么意思 (这是我想知道的);特别是最后的 ()
...全文
84 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
quickball 2002-11-21
  • 打赏
  • 举报
回复
typedef Screen& (Screen::*Action)();

Action是一个指向Screen类的成员函数的函数指针。
Screen&被定义为对Action函数指针的引用类型。
boolean6199 2002-11-15
  • 打赏
  • 举报
回复
typedef的语法就是:typedef + declaration;
topikachu 2002-11-09
  • 打赏
  • 举报
回复
Action 是 new_name
Screen&(Screen::* )()是existing_type

教你个窍门
看typedef的时候,先把typedef去掉,把后面的看成是一个变量声明,比如
Screen& (Screen::*Action)();
这个看起来就清楚了,Action是一个Screen类的成员函数,它的参数是void,返回值是Screen&.

那么在typedef中Action就是一个Screen类的成员函数别名,这类成员函数参数是void,返回值是Screen&
ooper 2002-11-09
  • 打赏
  • 举报
回复
函数指针
cwanter 2002-11-09
  • 打赏
  • 举报
回复
应该是定义了一种新的类成员函数指针类型。别忘了typedef是定义类型的。
typedef Screen& (Screen::*Action)();
Action是新类型,它的类型是指向Screen类成员函数指针,成员函数应定义为
返回值为Screen&,参数为void.

typedef Screen& (Screen::*Action)();

class Screen
{
public:
Screen& func();
.....
};

Screen::func()
{
函数定义;
}

Action pfunc=Screen::func;

Screen screen;
(screen.*pfunc)();

leasun 2002-11-09
  • 打赏
  • 举报
回复
首先Action是一个指针(*),其次,这个指针指向一个Screen类的类成员(Scree::),然后这个类成员是一个函数(()),最后,这个函数返回一个Screen对象的引用。
Action是new_type,Screen& (Screen::* )()是existing_type
benbenhuhu 2002-11-09
  • 打赏
  • 举报
回复
up
detrox 2002-11-09
  • 打赏
  • 举报
回复
一个函数指针,它可以指向一个Screen类的函数

70,031

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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