Consider the following set of classes/Interfaces:
class IFish{
public:
virtual void eat() = 0;
}
class IFriendly{
public:
virtual void protect() = 0;
}
class IAggresive{
public:
virtual void attack(Point inDest) = 0;
}
class CDolphin : public IFish, IFriendly{
eat...
protect....
}
class CShark : public IFish, IAggresive{
eat....
attack...
}
Now I am having the following class
void CDiver
{
Void shouldRunAway(IFish* fish)
{
//???
}
}
My question is , can “shouldRunAway” extract from the fish argument whether it is an IAggresive or IFreindly (if it is any of these at all…) is there some kind of casting that can help out?
Expanding on what Drakosha posted, you would dynamic_cast the IFish pointer into an IAggressive pointer and check if it is NULL or not. Like this;