Ответ:
Программа представлена на скрине.
Далее под константой будет пониматься макроопределение (символическая константа)
Были созданы константы для обозначения флагов ингредиентов. Им даны осмысленные названия. Также была создана константа для формирования пустого заказа.
int ingredientsCount(Pizza&); - возвращает количество ингредиентов.
void addCheese(Pizza&); - добавляет в заказ сыр
void removeOnion(Pizza&); - убирает из заказа лук
void togglePineapple(Pizza&); - переключает ананасы
void addOnionIfMushroomsExist(Pizza&); - добавляет лук если есть грибы