Я работаю над домашним заданием для виртуального ролодекса, который вызвал основной класс, класс ролодекса и карточку учебный класс. Чтобы вывести содержимое всех «карточек» на консоль, в назначении сказано, что main () должен вызывать функцию show (...) в классе rolodex, передавая ей ostream и show (...), а затем выполняет итерацию над карточками, вызывая каждую из их функций showCard (). Фактическое отображение осуществляется функцией showCard () объектов карты, которая отображается в предоставленном ostream.
Я не понимаю, почему ostream должен / должен передаваться куда-либо. Похоже, что присваивание требует чего-то вроде этого:
main() {
Rolodex myRolodex;
ostream myStream;
myRolodex.show(myStream);
}
void Rolodex::show(ostream& theStream) {
//for each card 'i' in the Rolodex...
myCard[i].show(theStream);
}
void Card::show(ostream& theStream) {
theStream << "output some stuff" << endl;
}
вместо чего-то вроде этого:
main() {
Rolodex myRolodex;
myRolodex.show(); //no ostream passed
}
void Rolodex::show() {
//for each card 'i' in the Rolodex...
myCard[i].show();//no ostream passed
}
void Card::show() {
cout << "output some stuff" << endl;
}
Я либо неправильно понимаю использование ostream в качестве параметра, либо упускаю какую-то другую очевидную причину для передачи ostream вниз по потоку таким образом?