最近写一个程序,其中要用到多态技术。但是有个问题,就是在外部的函数中如何判断传入的指针所属类型。
比如说:
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可以用到,好复杂~
浙公网安备 33010602011771号