синтаксическая ошибка: идентификатор “BurgerMaker”, DrinkMaker, PotatoMaker, в месте добавления

98
19 октября 2019, 21:00
#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;
}
Answer 1

Внутри класса 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 скопипащена.

Answer 2
  1. Я бы сказал, что функция Cashier::_to_order() вообше не нужна. Она ничего не делает кроме того, что создает обьекты в куче и, следовательно, проблему. Вектор уничтожается сразу после вызова, а обьекты, чьи адреса нигде не сохранены, остаются. Результат: утечка памяти, лишный вызов функции, когда можно просто создать эти три обьекта.

  2. Смысль наследования и функций теряется, если каждый раз код повторяется, что наблюдается у вас везде...

READ ALSO
c++: запись файла в несуществующую папку

c++: запись файла в несуществующую папку

Подскажите пожалуйста наилучший способ как записать файл в некоторую папку folder1\folder2\

137
sh: 1: Syntax error: word unexpected (expecting &ldquo;)&rdquo;)

sh: 1: Syntax error: word unexpected (expecting “)”)

Программа должна получать на вход координаты из командной строки по образцу (x;y) , вроде бы все норм , но выдает ошибкуБыл бы благодарен, если...

119
Qt отображение корневого элемента дерева

Qt отображение корневого элемента дерева

Хочу создать свою модель дерева, получается вот такое:

121