我有基类和2个继承者。
class A{
virtual double calc();
/.../
}
class B: public class A{
virtual double calc(){}
/..../
}
class C: public class A{
virtual double calc(){}
/..../
}
还有一个功能:
void func(A *input1, A* input2){
....
}
以这种方式调用:
C ptrC;
B ptrB;
func(&ptrB, &ptrC);
那么,如果参数input1,input2具有相同或不同的类型,我怎么能理解func内部?
答案 0 :(得分:0)
你可以typeid(*input1) == typeid(*input2)
。但要仔细考虑这是否真的是你想要的,或者你是否真的在寻找Binary Method Problem的解决方案。
答案 1 :(得分:0)
if(typeid(*input1)==typeid(*input2)){
//do something
}
您必须启用rtti
答案 2 :(得分:0)
您可以使用dynamic_cast或typeinfo获取信息: -
B* b = dynamic_cast<B*>(input)
if ( b == NULL )
//Object of type C.
OR
if (typeid(A) == typeid(input) )
//Object is of type A.
但是你应该完全避免这些事情。这是虚函数的全部本质。