#include <iostream>
#include <vector>
using namespace std;
class Cashier
{
public:
Cashier()
{
_iBurgerMakerOerder = 0;
_iDrinkMakerrOerder = 0;
_iPotatoMakerOerder = 0;
}
~Cashier() {}
bool TakeOrder()
{
int iQuanBurgerTime, iQuanDrinkTime, iQuanPotatoTime;
cout << "Кол-во бургеров: ";
cin >> iQuanBurgerTime;
cout << endl << "Кол-во лимонада: ";
cin >> iQuanDrinkTime;
cout << endl << "Кол-во картошки: ";
cin >> iQuanDrinkTime;
if (_take_order(iQuanBurgerTime, iQuanDrinkTime, iQuanDrinkTime))
{
_to_order();
return true;
}
return false;
}
private:
bool _take_order(int _b, int _d, int _p)
{
if ((!_b) && (!_d) && (!_p))
return false;
this->_iBurgerMakerOerder = _b;
this->_iDrinkMakerrOerder = _d;
this->_iPotatoMakerOerder = _p;
return true;
}
void _to_order()
{
vector<Cashier*> cashierArray;
cashierArray.push_back(new BurgerMaker(_iBurgerMakerOerder));
cashierArray.push_back(new DrinkMaker(_iDrinkMakerrOerder));
cashierArray.push_back(new PotatoMaker(_iPotatoMakerOerder));
}
int _iBurgerMakerOerder, _iDrinkMakerrOerder, _iPotatoMakerOerder;
};
class BurgerMaker : public Cashier
{
public:
BurgerMaker()
{
_quanBurger = 0;
_cook_burger();
}
~BurgerMaker() {}
void a() {}
BurgerMaker(int value)
{
_quanBurger = value;
_cook_burger();
}
private:
int _quanBurger;
bool _cook_burger()
{
if (!_quanBurger)
{
cout << endl << " Жду заказ" << endl;
return false;
}
cout << endl << "Готовлю " << _quanBurger << "бургер(-а, -ов)" << endl;
cout << endl << "Заказ готов" << endl;
return true;
}
};
class DrinkMaker : public Cashier
{
public:
DrinkMaker()
{
_quanDrink = 0;
_cook_drink();
}
~DrinkMaker() {}
DrinkMaker(int value)
{
_quanDrink = value;
_cook_drink();
}
private:
int _quanDrink;
bool _cook_drink()
{
if (!_quanDrink)
{
cout << endl << " Жду заказ" << endl;
return false;
}
cout << endl << "Готовлю " << _quanDrink << "лимонад(-а, -ов)" << endl;
cout << endl << "Заказ готов" << endl;
return true;
}
};
class PotatoMaker : public Cashier
{
public:
PotatoMaker()
{
_quanPotato = 0;
_cook_Potato();
}
~PotatoMaker() {}
PotatoMaker(int value)
{
_quanPotato = value;
_cook_Potato();
}
private:
int _quanPotato;
bool _cook_Potato()
{
if (!_quanPotato)
{
cout << endl << " Жду заказ" << endl;
return false;
}
cout << endl << "Готовлю " << _quanPotato << "картошку(-и, -ек)" << endl;
cout << endl << "Заказ готов" << endl;
return true;
}
};
class MC_Donalds
{
public:
MC_Donalds() {}
~MC_Donalds() {}
bool act()
{
Cashier time;
if (time.TakeOrder())
return true;
return false;
}
};
int main()
{
setlocale(0, "russian");
MC_Donalds q;
q.act();
system("pause");
return 0;
}
Внутри класса Cashier удалите тело функции _to_order
, оставив только
void _to_order();
и перенести его прямо над main
void Cashier::_to_order()
{
vector<Cashier*> cashierArray;
cashierArray.push_back(new BurgerMaker(_iBurgerMakerOerder));
cashierArray.push_back(new DrinkMaker(_iDrinkMakerrOerder));
cashierArray.push_back(new PotatoMaker(_iPotatoMakerOerder));
}
также обратите внимание, что внутри main переменная iQuanDrinkTime
скопипащена.
Я бы сказал, что функция Cashier::_to_order()
вообше не нужна.
Она ничего не делает кроме того, что создает обьекты в куче и,
следовательно, проблему. Вектор уничтожается сразу после вызова, а
обьекты, чьи адреса нигде не сохранены, остаются. Результат: утечка
памяти, лишный вызов функции, когда можно просто создать эти три
обьекта.
Смысль наследования и функций теряется, если каждый раз код повторяется, что наблюдается у вас везде...
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Подскажите пожалуйста наилучший способ как записать файл в некоторую папку folder1\folder2\
Программа должна получать на вход координаты из командной строки по образцу (x;y) , вроде бы все норм , но выдает ошибкуБыл бы благодарен, если...
Есть приложение с пулом потоков