The cast is correct (as long as Animal is a polymorphic class). What is the compile error you're getting?
It's more likely that it's the next line that's causing it, it should be if (dog)cout << dog->feedDog() << endl;
(unless feedDog() returns some type of pointer).
Base class destructors should always be either public and virtual or protected and non-virtual.
Anyway, the "is not polymorphic" error is probably saying that one of your object's types does not inherit from Animal. Just post the code rather than a few lines and it's easier/faster for us to identify the problem(s).