Вам необходимо реализовать operator <<
соответственно для вашего класса. Общая схема выглядит следующим образом:
template <typename T>
logger& operator <<(logger& log, T const& value) {
log.your_stringstream << value;
return log;
}
Обратите внимание, что это относится к (не const
) ссылкам, так как операция изменяет ваш регистратор. Также обратите внимание, что вам нужно вернуть параметр log
, чтобы цепочка работала:
log << 1 << 2 << endl;
// is the same as:
((log << 1) << 2) << endl;
Если самая внутренняя операция не вернула текущий экземпляр log
, все остальные операции либо не будут выполнены во время компиляции (неправильная сигнатура метода), либо будут проглочены во время выполнения.