64,282
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
using namespace std;
//三基类
class A{public: virtual ~A(){};};
class B:public A{};
class C:public B{};
//测试类
class D :public C {};
template<class D>
bool convert(A *pb)
{
D *pd=dynamic_cast<D *>(pb);
return (pd!=NULL);
}
int main(int argc, char **argv)
{
A *pd= new D();
if(convert<B>(pd))//mark
cout<<"pd所指对象可以转化成B类对象"<<endl;
else
cout<<"pd所指对象不可以转化成B类对象"<<endl;
if(convert<C>(pd))
cout<<"pd所指对象可以转化成C类对象"<<endl;
else
cout<<"pd所指对象不可以转化成C类对象"<<endl;
delete pd;
return 0;
}