由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - c++ typedef 一问
相关主题
pointer to functionOne question about Void pointer
请教一个c++ 里functor的问题C++ class template specialization question
which func will be called?问个C++ virtual function的问题 (转载)
Please help: regarding ftp scripting in Windows xp Command promptC++ function template问题
指向函数的指针一个C语言的面试题,有点乱,麻烦看一下
问个C的typedef问题用c怎么实现generic stack (转载)
大家帮我看看这个C程序为什么出错了请教一个C++中function pointer的问题。
C++ func overload question这个function pointer最后的那个int是什么意思?
相关话题的讨论汇总
话题: typedef话题: receiver话题: action话题: void
进入Programming版参与讨论
1 (共1页)
yy
发帖数: 45
1
看了看一些source code, 有一些typedef读起着实比较费劲,
比如:
template
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)();
谢谢
T*******x
发帖数: 8565
2
读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 SimpleCommand: public Command{
: public:
: typedef void (Receiver::* Action)();
: SimpleCommand(Receiver* r, Action a):
: _receiver(r), _action(a){}
: virtual void Execute();
: private:

1 (共1页)
进入Programming版参与讨论
相关主题
这个function pointer最后的那个int是什么意思?指向函数的指针
sgi stl 源代码一问问个C的typedef问题
C++ array new一问大家帮我看看这个C程序为什么出错了
C 中的typedef 一问C++ func overload question
pointer to functionOne question about Void pointer
请教一个c++ 里functor的问题C++ class template specialization question
which func will be called?问个C++ virtual function的问题 (转载)
Please help: regarding ftp scripting in Windows xp Command promptC++ function template问题
相关话题的讨论汇总
话题: typedef话题: receiver话题: action话题: void