.SHREDDED, GRATED, SLICED, CHOPPED } FoodState;
// Вершина дерева наследования
class Food (
public:
// Конструктор
Food,(const FoodState = WHOLE);
// Виртуальные методы — все продукты должны иметь возможность // устанавливать и возвращать свое состояние. // Эти функции обеспечивают также полиморфность // класса Food и возможность использования RTTI. virtual FoodState GetStatef) const;
virtual void SetState(const FoodState);
« private:
// Закрытые данные-члены FoodState theFoodState;
// Конструктор Food
Food::Food(const FoodState newState)
{
SetState(newState) ;
}
// Виртуальные методы
FoodState Food::GetState() const
{
return theFoodState;
void Food::SetState(const FoodState newState) {
theFoodState = newState;
}
// Перегрузка «, теперь можно вывести текущее состояние 3Stream& operator«(ostream& outstrm,
Foods theFood) (
switch(theFood.GetState()) (
case WHOLE: outstrm « "Целиком";
break;
case SHREDDED: outstrm « "Порезать";
break;
case GRATED: outstrm « "Натереть";
break;