#cpp
У меня есть класс Console, который формирует строку и выводит ее на экран (Имеется ввиду не DOS консоль, а своя собственная в окне приложения). Чтобы вывести на нее информацию, приходится писать так: std::ostringstream os; os << "value X = " << x; console.print(os.str()); Каждый раз так писать очень неудобно, хочется использовать класс так же, как и при работе со стандартными потоками ввода/вывода, примерно так: console << "value X = " << x; //или через функцию метод conslole.get() << "value X = " x; Есть способ реализовать такое? Желательно без сторонних библиотек
Ответы
Ответ 1
Если вы хотите, чтобы ваш класс выглядел как ostream, то всё, что вам нужно сделать - перегрузить оператор <<: class Console { private: std::ostringstream os; public: templateConsole &operator<<(const T &x) { os << ':' << x << ':'; return *this; } std::string to_string() const { return os.str(); } }; Источник Теперь вы можете использовать вашу консоль как поток вывода: Console con; con << "abc" << 123; Если же вам нужно, чтобы ваш класс являлся потоком вывода, придётся наследоваться от базовых классов потоков вывода и переопределять их методы.
Комментариев нет:
Отправить комментарий