/********************************************************************
file name : CLK.h
author : Clark/陈泽丹
created : 2011-11-10
purpose : 模板特化和强制转换问题
*********************************************************************/
#include <iostream>
using namespace std;
class Base
{
public:
Base(){ m_BaseDate = 5; }
protected:
int m_BaseDate;
};
struct kkk
{
int k;
kkk()
{
k = 102;
}
};
template <class T>
class Trigger: public Base
{
public:
Trigger(T data)
{
cout<<"非法类型"<<endl;
}
};
template <>
class Trigger<int>: public Base
{
public:
Trigger(int data)
{
cout<<data<<endl;
}
};
template <>
class Trigger<kkk>: public Base
{
public:
Trigger(kkk data)
{
cout<<data.k<<endl;
}
};
class Q:public Trigger<int>
{
};
template<class T>
void Recv(T& date)
{
Trigger<T> triger(date);
}
void Recv1(char* buf)
{
int *pSTrig = (int *) buf;
if (NULL == pSTrig)
{
return;
}
cout<<*pSTrig<<endl;
}
void main()
{
//传入整型
int iType = 5;
Recv(iType);
kkk kd;
Recv(kd);
//传入非法类型
double dType = 5;
Recv(dType);
//传入整型
Recv1((char*)&iType);
//传入非法类型
Recv1((char*)&dType);
system("pause");
}
/*
5
非法类型
5
0
请按任意键继续. . .
*/