Conversion SUPPERSUBCLASS 判断 T 是否为 U 的父类
来源:互联网 发布:车辆识别软件 编辑:程序博客网 时间:2024/06/07 00:23
#include <cstdlib>
#include <iostream>
using namespace std;
template<class T,class U>
class Conversion
{
typedef char small;
class Big{char dummy[2];};
static small Test(T);
static Big Test(...);
static T MakeT();
static U MakeU();
public:
enum{exists = sizeof(Test(MakeU())) == sizeof(small)};
enum{exist2ways = exists && Conversion<U,T>::exists};
enum{sametype = false};
};
template<class T>
class Conversion<T,T>
{public:enum{exists = 1,exist2ways = 1,sametype = 1};};
#define SUPPERSUBCLASS(T,U)/
(Conversion<const T*,const U*>::exists)&&/
!(Conversion<const T*,const void*>::sametype)//防止 T* 是void*类型
#define SUPPERSUBCLASS_STRICT(T,U)/
(Conversion<const T,const U>::exists)&&/
!(Conversion<const T,const void>::sametype)//防止 T* 是void*类型
class Base
{};
class Derived:public Base
{};
int main(int argc, char *argv[])
{
cout<<"SUPPERSUBCLASS(T,U)结果 (1 = T是U的父类)(0 = T不是U的父类)"<<endl;
cout<<"----------------------------------------------------"<<endl;
bool bRes = SUPPERSUBCLASS(Base,Derived);
cout<<"SUPPERSUBCLASS(Base,Derived)的关系:"<<bRes<<endl;
bRes = SUPPERSUBCLASS(Derived,Base);
cout<<"SUPPERSUBCLASS(Derived,Base)的关系:"<<bRes<<endl;
bRes = SUPPERSUBCLASS(int,Base);
cout<<"SUPPERSUBCLASS(int,Base)的关系:"<<bRes<<endl;
bRes = SUPPERSUBCLASS(int,float);
cout<<"SUPPERSUBCLASS(int,float)的关系:"<<bRes<<endl;
bRes = SUPPERSUBCLASS(int,void);
cout<<"SUPPERSUBCLASS(int,void)的关系:"<<bRes<<endl;
bRes = SUPPERSUBCLASS(Derived,void);
cout<<"SUPPERSUBCLASS(Derived,void)的关系:"<<bRes<<endl;
bRes = SUPPERSUBCLASS(void,Derived);
cout<<"SUPPERSUBCLASS(void,Derived)的关系:"<<bRes<<endl;
cout<<"----------------------------------------------------"<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}
- Conversion SUPPERSUBCLASS 判断 T 是否为 U 的父类
- {数据结构}判断结点u是否为结点v的子孙
- 6_34_扩展判断u是否为v的子孙
- t-sql判断一个字符串是否为bigint的函数(全角数字需要判断为不合格)
- 6_33_两个一维数组判断u是否为v的子孙
- iOS判断是否为中文, nsstring的类方法
- java 判断对象是否为某个类的实例
- 模板的使用:如何判断参数是否为一个类
- 设随机过程{X(t)=Acos(ωt+Θ),t∈(一∞,+∞)},其中A,ω,Θ为相互独立的实随机变量,其中A的均值为2,方差为4,且Θ~U(-π,π),ω~U(-5,5),试问X(t)是否为平稳过程
- 判断字段的值是否为空
- 判断是否为空的javascript代码
- 判断是否为日期类型的方法
- 判断输入是否为中文的函数
- 判断输入是否为中文的函数
- 判断输入是否为中文的函数
- 判断是否为合法的电话号码
- 判断是否为合法的电子邮件地址
- 判断是否为字母的方法
- EAS设置日期
- Manifest.xml下的一些属性定义和用法
- ASP.NET C# String.Format格式化输出
- oracle的listener.ora sqlnet.ora tnsnames.ora三个文件的关联性
- sql 查询所有数据库、表名、表字段总结
- Conversion SUPPERSUBCLASS 判断 T 是否为 U 的父类
- 我的2010
- Cisco 2950交换机基本配置命令
- About the String Functions of XSLT
- Velocity模板引擎(template engine)学习笔记二
- 图像编码与压缩
- 对比主流Bootloader的性能
- (转)Builder模式的误区:将复杂对象的构建进行封装,就是Builder模式了吗?
- windows下快速创建大文件