当前在线人数17123
首页 - 分类讨论区 - 电脑网络 - 葵花宝典版 -阅读文章
未名交友
[更多]
[更多]
文章阅读:Re: c++ typedef 一问
[同主题阅读] [版面: 葵花宝典] [作者:TheMatrix] , 2005年06月19日22:21:40
TheMatrix
进入未名形象秀
我的博客
[上篇] [下篇] [同主题上篇] [同主题下篇]

发信人: TheMatrix (TheMatrix), 信区: Programming
标  题: Re: c++ typedef 一问
发信站: Unknown Space - 未名空间 (Sun Jun 19 22:24:13 2005), 转信

读typedef的trick是这样的:
你先把typedef这个关键字去掉,这个语句就变成了一个变量声明,
再加回typedef,就定义了一个这个变量所属的类型。

比如你这个
typedef void(Receiver::* Action)();

去掉这个typedef,就是一个函数指针变量的声明,
这个指针指向一个函数,这个函数1.没有参数2.没有返回值3.有一定的scope --
必须指向一个成员函数。加回typedef后,就定义了一个相应的类型。

请注意这两个的不同:
void func();
void (*func)();
前者是一个函数的prototype,后者是一个函数指针变量的声明,
我们这里要得是后者(去掉typedef之后)。
【 在 yy (似水※流年) 的大作中提到: 】
: 看了看一些source code, 有一些typedef读起着实比较费劲,
: 比如:
: template <class Reveiver>
: class SimpleCommand: public Command{
: public:
:         typedef void (Receiver::* Action)();
:         SimpleCommand(Receiver* r, Action a):
:         _receiver(r), _action(a){}
:         virtual void Execute();
: private:
:         Action _action;
:         Receiver* _receiver;
: }
: 请问有什么比较简单的trick或者rule 来读这个 typedef
: typedef void (Receiver::* Action)();
: 谢谢


--
※ 来源:.Unknown Space - 未名空间 mitbbs.com.[FROM: 69.177.]

[上篇] [下篇] [同主题上篇] [同主题下篇]
[转寄] [转贴] [回信给作者] [修改文章] [删除文章] [同主题阅读] [从此处展开] [返回版面] [快速返回] [收藏] [举报]
 
回复文章
标题:
内 容:

未名交友
将您的链接放在这儿

友情链接


 

Site Map - Contact Us - Terms and Conditions - Privacy Policy

版权所有,未名空间(mitbbs.com),since 1996