    #include <iostream>
    class Animal
    {
        private:
            int a_CUR_food_lvl; 
            int food_chain_level;
            const int a_MAX_food_lvl; 
            const int a_hunger_rate; 
    
       public:
            Animal(int curr, int max, int rate, int food_chain)
            : a_CUR_food_lvl(curr), a_MAX_food_lvl(max),
            a_hunger_rate(rate), food_chain_level(food_chain) {}
    
            bool canEat(Animal& theAnimal) const
            { return food_chain_level > theAnimal.food_chain_level; } 
    //...
    }; 

    class Carnivore : public Animal
    {
       public:
            Carnivore(int curr, int max, int rate) : Animal(curr, max, rate, 2) {}
    };

    class Herbivore : public Animal
    {
       public:
            Herbivore(int curr, int max, int rate) : Animal(curr, max, rate, 1) {}
    };

    class Insect : public Animal
    {
       public:
            Insect(int curr, int max, int rate) : Animal(curr, max, rate, 0) {}
    };

    Carnivore Wolf(150, 200, 2);
    Carnivore Cheetah(75,125,2);
    Herbivore Squirrel(150,200,2);

    using namespace std;

    int main()
    {
       cout << (Wolf.canEat(Squirrel)?"true":"false") << endl;
       cout << (Squirrel.canEat(Cheetah)?"true":"false") << endl;
    }
