Здравствуйте, RobinBobin, Вы писали:
RB>Есть мой класс, в котором определены перегруженные операторы вывода. Нужно, чтобы мой класс понимал и манипуляторы.
Манипуляторы манипулируют состоянием потока, в который ты пишешь в своем перегруженном операторе вывода.
Тебе нужно считывать состояние потока и соответственно менять свой вывод.
Здравствуйте, RobinBobin, Вы писали:
RB>Есть мой класс, в котором определены перегруженные операторы вывода. Нужно, чтобы мой класс понимал и манипуляторы.
Здравствуйте, RobinBobin, Вы писали:
RB>И, кстати говоря, почему манипуляторы в <iomanip> / <iomanip.h> определены таким извращенским способом? Похоже, это функции, а не классы?
Потому что перегрузка и шаблоны умеют много разных гитик
Для манипуляторов без параметров (таких как std::endl) достаточно сделать так:
Для манипуляторов с параметрами — нужно эти параметры связывать (конструировть объекты). Тут обширное поле для разных изысков, включая std::bind1st, boost::bind, boost::function и т.п.
RB>И, кстати говоря, почему манипуляторы в <iomanip> / <iomanip.h> определены таким извращенским способом? Похоже, это функции, а не классы?
Почему извращенским? Это функции, возвращающие классы.
Просто если делать так, как предложил Кодт, то тебе понадобиться либо столько операторов <<, сколько у тебя есть манипуляторов (+ все остальные), либо придется воспользоваться наследованием.