In this case, you need to specify some type parameter to Animal in your typename definition, or else it would be an "infinite recursion" in the type construction:
template class Animal;//you'll need this forward declaration
template > class Animal //int is just an example
{
public:
T getPrey ();
}