Is it possible to call a derived class's method from a base class? E.G; Avoid 'slicing'
<p>Let's say that there's some classes, all deriving from a base class named Animal:</p>

<pre><code>Cat
Dog
Parrot
EveryAnimalInExistance
</code></pre>

<p>Each class implements their own method of abstract methods such as:</p>

<pre><code>attack()
defend()
hunt()
breed()
</code></pre>

<p>Then there's a method called</p>

<pre><code>observeAnimal(Animal* everyAnimalInExistance)
</code></pre>

<p>How do I pass any potential animal from a potential range of thousands of them, and simply call</p>

<pre><code>everyAnimalInExistance.hunt();
</code></pre>

<p>As I understand, in c++ the object would be 'sliced' and it would attempt to call the base class's own methods and that typecasting is required to call the correct method.</p>

<p>I cannot be certain if RTTI is available in every environment of the project as it's vast and numerous, can anyone enlighten me on the approach I should take?</p>
