windows程序设计第3章中遇到的用法,这样表述我也不知道是否准确,记录一下部分代码:
头文件 _AFXTLS.h
struct CThreadData
{
CThreadData* pNext;
int nData;
}
clss CSimpleList
{
public:
CSimpleList(int nNextOffset);
void* GetHead() const;
void* m_pHead;
size_t m_nNextOffset;
}
inline CSimpleList:CSimpleList(int nNextOffset)
{ m_pHead = NULL; m_nNextOffset = nNextOffset;}
inline void* CSimpleList:GetHead()
{ return m_pHead;}
重点是下面
template <class TYPE>
class TypedSimpleList:public CSimpleList
{
public:
TypedSimpleList(int nNextOffset):CSimpleList(nNextOffset){};
/**直接引用类的对象会调用此函数**/
operator TYPE(){ printf("调用了函数\n"); return (TYPE)CSimpleList::GetHead(); }
}
#include <iostream>
#include "_AFXTLS.h"
int main()
{
TypedSimpleList<CThreadData*> m_list;
CTreadData* pData = m_list; //直接引用了类的对象,会调用operator TYPE()
return 0;
}
windows程序设计书中的例子以这种方式获取链表首地址,进而对链表进行操作。