C++ 语法
C++ 语法求助!
我在看一段代码时,有几句我不理解是什么意思,希望大侠们解释下,谢谢!
主要是有这么一句:
POSITION Pos = m_MemBPList.GetHeadPosition();
我转到POSITION的定义:
struct __POSITION { };
typedef __POSITION* POSITION;
我转到GetHeadPosition()的定义:
POSITION GetHeadPosition() const;
源码里也没有其它有用的GetHeadPosition函数了,
请问GetHeadPosition到底是什么函数? POSITION又是什么类型啊?
------解决方案--------------------
VC的基本头文件AFX.h里对POSITION是这样定义的:
struct __POSITION { };
typedef __POSITION* POSITION
显然这里定义了一个没有任何字段的结构体,而POSITION是这个结构体的指针。
VC在使用CList时,一些函数往往用POSITION参数,或者返回POSITION类型,其实查看CList的原代码就知道,原来CList返回的POSITION就是它的链表的一个结点指针,也就是说,在CList里有一个CNode的类定义了结点,而POSITION就是CNode*
所以说,虽然__POSITION结构体没有任何字段,但用POSITION结构体指针,仅仅用来表达CNode*指针,并且是强制转换过来的。于是POSITION被VC用为一种常见的数据类型---32位指针。
我在看一段代码时,有几句我不理解是什么意思,希望大侠们解释下,谢谢!
主要是有这么一句:
POSITION Pos = m_MemBPList.GetHeadPosition();
我转到POSITION的定义:
struct __POSITION { };
typedef __POSITION* POSITION;
我转到GetHeadPosition()的定义:
POSITION GetHeadPosition() const;
源码里也没有其它有用的GetHeadPosition函数了,
请问GetHeadPosition到底是什么函数? POSITION又是什么类型啊?
------解决方案--------------------
VC的基本头文件AFX.h里对POSITION是这样定义的:
struct __POSITION { };
typedef __POSITION* POSITION
显然这里定义了一个没有任何字段的结构体,而POSITION是这个结构体的指针。
VC在使用CList时,一些函数往往用POSITION参数,或者返回POSITION类型,其实查看CList的原代码就知道,原来CList返回的POSITION就是它的链表的一个结点指针,也就是说,在CList里有一个CNode的类定义了结点,而POSITION就是CNode*
所以说,虽然__POSITION结构体没有任何字段,但用POSITION结构体指针,仅仅用来表达CNode*指针,并且是强制转换过来的。于是POSITION被VC用为一种常见的数据类型---32位指针。