宏, C++模板,补充代码
发布日期:2021-06-30 22:08:39 浏览次数:2 分类:技术文章

本文共 1420 字,大约阅读时间需要 4 分钟。

// 补充代码 标记后的内容,原来是没有的.

这是模拟宏和c++模板在MFC的应用.

/// @file main.cpp/// @brief 宏, C++模板,补充代码#include 
class CNoTrackObject {};class AFX_MODULE_STATE : public CNoTrackObject {};class AFX_THREAD_STATE : public CNoTrackObject {public: AFX_MODULE_STATE* m_pModuleState;};class CThreadLocalObject {public: CNoTrackObject* GetData(CNoTrackObject* (*pfnCreateObject)()) { // 补充代码 return pfnCreateObject(); } ~CThreadLocalObject() {} int m_nSlot;};template
class CThreadLocal : public CThreadLocalObject {public: T* GetData() { T* pData = (T*)CThreadLocalObject::GetData(&CreateObject); return pData; } // 补充代码 // 类型转换运算符重载 operator T*() { return GetData();} T* operator->() { return GetData(); } // 补充代码 /// CreateObject 相当于在类中实现的一个全局函数 /// 和在类外完成的一个全局函数相同 friend CNoTrackObject* CreateObject() { static CNoTrackObject s_NoTrackObject; return &s_NoTrackObject; }};// 补充代码#define THREAD_LOCAL(class_name,ident_name) \CThreadLocal
ident_name;#define EXTERN_THREAD_LOCAL(class_name,ident_name) \THREAD_LOCAL(class_name,ident_name)EXTERN_THREAD_LOCAL(AFX_THREAD_STATE,_afxThreadState)AFX_MODULE_STATE* AfxGetModuleState() { AFX_THREAD_STATE* pState = _afxThreadState; return pState->m_pModuleState;}int main(int argc, char* argv[]) { AFX_MODULE_STATE* pState = AfxGetModuleState(); return 0;}

转载地址:https://lostspeed.blog.csdn.net/article/details/50578353 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:STLport在vc6中的集成
下一篇:构造,析构, 在构造析构中调用虚函数, 显式析构

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2024年05月01日 20时14分33秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章