How do I check at runtime if an object is of type ClassA or of derived type ClassB? In one case I have to handle both instances separately
ClassA* SomeClass::doSomething ( ClassA* )
{
if( /* parameter is of type base class */) {
} else if { /* derived class */ ) {
}
}
Maybe I could say that the derived class ClassB has some special capabilities. But how do I do that without changing the existing class ClassA ?
It’s generally a very bad idea to switch on the exact type like that. By doing this, you are tightly coupling your method to derived classes of
ClassA. You should use polymorphism. Introduce avirtualmethod in class A, override it in class B and simply call it in your method.Even if I was forced to handle the functionality in the external function itself for some reason, I would do something like: