| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > Подскажите как сделать оператор потока в классе |
| Автор: gAlexKo 8.4.2021, 12:53 | ||
| Нужно в строковом потоке выводить переменную to_index из объекта SIMV. Что-то забыл как это делается (или не знал никогда) ;-) Подскажите плиз.
|
| Автор: gAlexKo 8.4.2021, 13:14 |
| Заменил stringstream на ostream и прокатило. Хотя и непонятно. ;-) |
| Автор: xvr 9.4.2021, 11:21 |
| stringstream это частный случай ostream. Все операторы << делаются на самом базовом классе - ostream В вашем исходном случае вывести в stringstream ваш SIMV получится, а вот вывести что нибудь после этого (сцепив << ) - нет, т.к. возвращаемый результат stringstream&, а для него все остальные << (для других типов) не описаны |
| Автор: gAlexKo 9.4.2021, 12:04 | ||||
Немного не понял о "выводе после". Ведь в примере есть вывод по цепочке переменной i. Значит у стандартных типов вывод потоком в строку предусмотрен. Не могли вы написать то что не должно работать? [code=cpp] int i=1; SIMV val1; val1.to_index = 22; stringstream ss; ss << "["<< i << "]=" << val1;
|
| Автор: xvr 16.4.2021, 16:19 | ||||
Всё просто, нужно только развернуть последовательность << в вызовы методов:
Какой тип параметров у самого внешнего operator <<? ostream и SIMV (ostream потому что первый вложенный operator<< возвращает именно ostream). Ваш operator<< (stringstream&, SIMV&) не подойдет - тип стрима не тот А вот
откомпилируется - результат ss << val1 будет stringstream&, а он в ostream& преобразуется (тут я был слегка не прав) |