神奇的模板-自身做自身的模板参数
2012-03-30 12:08
127 查看
实践中发现以下实现居然行得通,一向低水平的编译器此次发挥出乎意料了:class Entity_Logic: public Entity_Interface< Entity_Logic, Res_Logic >
/****************************** * 文件名: Res_Interface.h * 创建人: 陈泽丹/Clark * 创建时间: 20120330 * 文件描述: ******************************/ #pragma once template<class TMP_TYPE> class Res_Interface { public: virtual ~Res_Interface(){} Res_Interface(){} bool Add(TMP_TYPE* _pType){ return true; } void Del(TMP_TYPE* _pType){} };
/****************************** * 文件名: Entity_Interface.h * 创建人: 陈泽丹/Clark * 创建时间: 20120330 * 文件描述: ******************************/ #pragma once template< class TMP_THIS, class TMP_RES> class Entity_Interface { public: virtual ~Entity_Interface(){ m_pRes->Add( GetClass() ); } TMP_THIS* GetClass(){ return (TMP_THIS*)this; } protected: Entity_Interface(TMP_RES* _pRes):m_pRes(_pRes){ m_pRes->Del( GetClass() ); } private: TMP_RES* m_pRes; };
/****************************** * 文件名: Res_Logic.h * 创建人: 陈泽丹/Clark * 创建时间: 20120330 * 文件描述: ******************************/ #pragma once #include "Res_Interface.h" #include "Entity_Logic.h" class Entity_Logic; class Res_Logic:public Res_Interface< Entity_Logic > { public: Res_Logic(void); virtual ~Res_Logic(void); };
#include "Res_Logic.h" Res_Logic::Res_Logic(void) { } Res_Logic::~Res_Logic(void) { }
/****************************** * 文件名: Entity_Logic.h * 创建人: 陈泽丹/Clark * 创建时间: 20120330 * 文件描述: ******************************/ #pragma once #include "Entity_Interface.h" #include "Res_Logic.h" class Res_Logic; class Entity_Logic: public Entity_Interface< Entity_Logic, Res_Logic > { public: Entity_Logic( Res_Logic* _pRes_Logic); virtual ~Entity_Logic(); void RecvCmd(const int _iCmd){ } };
#include "Entity_Logic.h" Entity_Logic::Entity_Logic( Res_Logic* _pRes_Logic): Entity_Interface< Entity_Logic, Res_Logic >(_pRes_Logic) { } Entity_Logic::~Entity_Logic() { }
相关文章推荐
- 使用模板实现编译期间多态(类名当参数)
- C++primer学习:类模板(2)类模板:模板参数,成员模板和控制实例化
- 07 C++模板特化、模板偏特化和模板模板参数基本用法
- 神奇的sh:如何输出所有参数?
- C++模板编程->成员函数指针模板参数
- 对于qt5的信号机制的一点参考,然后利用模板实现:在新线程执行可变函数参数的调用
- VS2005的一个小问题,我编写了一个min函数,使用模板,传递的参数没有智能提示
- smarty自定义插件,支持模板传参数调用数据
- 解决打开Mind Manager9模板出现的参数不正确
- 模板参数默认值
- 使用JdbcTemplate模板时传递的参数Map和Object []数组
- 编程算法 - 不能被继承的类(模板参数友元) 代码(C++)
- STL map<string,string> 未能从“const std::string”为“const std::_Revranit<_RanIt,_Base> &”推导 模板 参数
- velocity 中 link js (js是vm模板)后导致的 request参数丢失
- thinkphp 模板参数
- 64位下好神奇啊(增加了PatchGuard技术保护自己,SSDT是相对地址,参数通过寄存器与rdi来传递)
- mysql配置模板(my-*.cnf)参数详细说明
- 堆的创建、插入、删除,模板参数实现堆以及模板的模板参数实现堆
- shell参数处理模板
- 自身特化的模板类:奇异循环模板