博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

关于多态

Posted on 2009-12-06 17:24  红波  阅读(130)  评论(0)    收藏  举报

最近写一个程序,其中要用到多态技术。但是有个问题,就是在外部的函数中如何判断传入的指针所属类型。

比如说:

class A

{


};

class B: public A

{


};

class C: public A

{


};

void Dis(A* abc, int num);

这里Dis中传入的是一个数组指针,当我想在Dis中调用的时候,会出现类型判断不对的情况,比如说我传入B*对象,长度为100,可能运行到30个的时候就出错了,这里就需要明确我传入对象的类型,但是在Dis中每次进行判断,然后强制转换类型的方法好像不太好。

我的解决方案是,利用模板和typeid来处理

template <typename T>

void Dis(T* abc, int num);

然后在调用函数前,利用typeid进行类型判断来获取类型,再调用函数。这种方案的缺点在于当Dis函数为

template <typename T, typename U>

void Dis(T* abc, int num, U* bbb);

时,会使得Dis的调用相当冗长,唉,不知有没有更好的办法,似乎typelist可以用到,好复杂~