Как использовать мой класс входа как поток C++ станд.?

13
задан bdukes 4 February 2009 в 15:17
поделиться

3 ответа

Необходимо реализовать 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 экземпляр, все другие операции или перестали бы работать во время компиляции (неправильная сигнатура метода) или будут глотаться во времени выполнения.

33
ответ дан 1 December 2019 в 17:42
поделиться

Перегрузка вставки operator< < путь не состоит в том, чтобы пойти. Необходимо будет добавить перегрузки для всего endl или любых других определяемых пользователем функций.

способ пойти состоит в том, чтобы определить Ваш собственный streambuf, и связывать его в поток. Затем просто необходимо использовать поток.

Вот несколько простых примеров:

14
ответ дан 1 December 2019 в 17:42
поделиться

В классе Регистратора переопределите < < оператор.

Нажимают Here, чтобы знать, как реализовать < < оператор.

можно также избежать регистрирующихся операторов в коде с помощью Аспектно-ориентированного программирования.

0
ответ дан 1 December 2019 в 17:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: