#include <iostream>
using namespace std;

class FoodItem
{
  public:
    int price;
  string description;
   virtual string getdescription()=0;
   virtual int getprice()=0;
};

class pizza : public FoodItem
{
  public:
  string getdescription()
  {
       description = "Adding pizza ";
       return description;
  }

  int getprice()
  {
       price = 300;
       return price;
  }
};

class Burger : public FoodItem
{
  public:
  string getdescription()
  {
       description = "Adding Burger ";
        return description;
  }

  int getprice()
  {
       price = 200;
       return price;
  }
};

class Addon : public FoodItem
{
    protected:
    FoodItem *food;

    public:
    Addon(FoodItem *f)
    {
        food = f;
    }
 
};

class cheese : public Addon
{
   int cheeseprice;
  public:

    cheese(FoodItem *food,int val) : Addon(food),cheeseprice(val){}

    string getdescription()
    {
      description = food->getdescription() + "with cheese ";
      return description;
    }

    int getprice()
    {
      return food->getprice()+cheeseprice;
    }

};

class topping : public Addon
{
   int toppingprice;
  public:

    topping(FoodItem *food,int val) : Addon(food),toppingprice(val){}

    string getdescription()
    {
      description = food->getdescription() + "with topping ";
      return description;
    }

    int getprice()
    {
      return food->getprice()+toppingprice;
    }

};

class sauce : public Addon
{
   int sauceprice;
  public:

    sauce(FoodItem *food,int val) : Addon(food),sauceprice(val){}

    string getdescription()
    {
      description = food->getdescription() + "with sauce ";
      return description;
    }

    int getprice()
    {
      return food->getprice()+sauceprice;
    }

};

int main() {

   FoodItem *fpizza = new pizza();

   fpizza = new cheese(fpizza,50);
   fpizza = new sauce(fpizza,30);

    cout<<"Description of fooditem : "<<fpizza->getdescription()<<endl;
     cout<<"Price of fooditem : "<<fpizza->getprice()<<endl;

    FoodItem *fburger = new Burger();

   fburger = new cheese(fburger,50);
   fburger = new topping(fburger,100);

    cout<<"Description of fooditem : "<<fburger->getdescription()<<endl;
     cout<<"Price of fooditem : "<<fburger->getprice()<<endl;
    
    return 0;
}

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: