Как работает istream& параметр?

114
19 февраля 2021, 00:00

Помогите разобраться нубу с тем, как работает istream&, конкретно интересует следующая конструкция:

вот есть у меня классы с методами:

// класс SimpleAnimalCreator
// constructor
SimpleAnimalCreator::SimpleAnimalCreator(){};
Animal* SimpleAnimalCreator::create(string const & spec, string const & name, int age) {
    if (spec == "Tiger") {
        return new Tiger(name, age);
    };
    if (spec == "Rabbit") {
        return new Rabbit(name, age);
    };
    if (spec == "Sparrow") {
        return new Sparrow(name, age);
    };
    if (spec == "Lizard") {
        return new Lizard(name, age);
    };
    return nullptr;
};
// destructor
SimpleAnimalCreator::~SimpleAnimalCreator(){};

// класс StreamZooCreator
//приватные поля istr и sac;
// constructor
StreamZooCreator::StreamZooCreator(istream & _istr, SimpleAnimalCreator * _sac){
};
// создание зоопарка
Zoo* StreamZooCreator::create(){
    string type;
    string name;
    int age;
    cout << "Ввести животных";
    while (istr)  {
        cin >> type >> name >> age;
        sac -> create(type, name, age);
    }
    return nullptr;
};
// destructor
StreamZooCreator::~StreamZooCreator(){};

В задании говорится, что у класса StreamZooCreator должно быть 2 поля типа istream & и SimpleAnimalCreator *, которые инициализируются в конструкторе. Ну и далее метод create() в классе StreamZooCreator должен передавать данные из потока istream в SimpleAnimalCreator, который создает некоторый объект класса Animal на основе входящих данных.

У меня собственно пара вопросов (первый важный, второй наверно и сам разберусь но на всякий случай):

  • как объявлять, инициализировать и что передавать в качестве фактического аргумента для istream& ???

  • ну и цикл while потом подправить, чтобы он опирался на входящий поток.

READ ALSO
Как присвоить wchar[256] переменную?

Как присвоить wchar[256] переменную?

Есть текстовый файл в котором хранится ссылка к примеру (https://rustackoverflow

117
Программа работает медленне, чем должна

Программа работает медленне, чем должна

Есть код простой небольшой демки на C++В ней реализовывается механика "ходить, ставить блоки, убирать блоки"

116
Странное поведение QString (проблема с кодировкой)

Странное поведение QString (проблема с кодировкой)

Проблема заключается в том, что в разных местах программы функции, работающие со QString, ведут себя по-разному в отношении обработки кириллицыЭто...

122