神奇的模板-自身做自身的模板参数

本文探讨了一次不寻常的编译器体验,展示了类模板在实现特定功能时的灵活性与效率。通过实例分析,揭示了类模板在面向对象编程中的强大应用,并解释了其背后的原理。

实践中发现以下实现居然行得通,一向低水平的编译器此次发挥出乎意料了: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()
{
}


 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值