Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Lambont
27 / 27 / 14
Регистрация: 23.11.2013
Сообщений: 62
#1

Шаблонный перегруженный оператор "<<" и endl - C++

17.03.2014, 23:44. Просмотров 316. Ответов 1
Метки нет (Все метки)

Здравствуйте! Изучаю C++, возникла, у меня, такая проблема...
Вот, к примеру, "кусок" класса:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class VisualScreen {
 
    std::stringstream _strstream;
 
    /* . . . */
 
public:
 
    template <typename T>
    friend VisualScreen& operator << (VisualScreen &l, T r){
        l._strstream << r;
        return l;
    }
 
    /* . . . */
 
};
как сделать так, чтоб всё хорошо работало вместе с endl, к примеру:
C++
1
2
VisualScreen VScr;
VScr << "WinXY" << 43 << 'y' << std::endl;
Ведь, естественно, сам stringstream переваривает endl, но при таком раскладе endl компилятору не нравится...
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.03.2014, 23:44
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Шаблонный перегруженный оператор "<<" и endl (C++):

Определить перегруженный бинарный и унарный оператор* для класса "Комплексное число" - C++
Как можно реализовать перегруженный бинарный и унарный оператор* для класса &quot;Комплексное число&quot;?

Перегруженный "оператор +" неправильно возвращает значения - C++
В классе Polynom class Polynom { private: public: void correction_degree(); //функция корректировки степени + unsigned...

Что применить "\n" или "endl"? - C++
Эти две операции похожи - они переходят на новую строку. Но endl очищает буфер, но при этом дольше выполняется. Так что же лучше...

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно" - C++
В зависимости от времени года &quot;весна&quot;, &quot;лето&quot;, &quot;осень&quot;, &quot;зима&quot; определить погоду &quot;тепло&quot;, &quot;жарко&quot;, &quot;холодно&quot;, &quot;очень холодно&quot;. Я так...

Чем отличается "\n" от std::endl? - C++
чем они отличаются?

бинарный "++": "Counter" не определяет этот оператор или преобразование к типу приемлемо к встроенному - C++
бинарный &quot;++&quot;: &quot;Counter&quot; не определяет этот оператор или преобразование к типу приемлемо к встроенному оператору #include &lt;iostream&gt; ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
xtorne21st
интересующийся
304 / 275 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
18.03.2014, 12:29 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>
#include <sstream>
 
class VisualScreen {
 
    std::stringstream _strstream;
 
    /* . . . */
 
    public:
 
    template <typename T>
    friend VisualScreen& operator << (VisualScreen &l, T r){
            l._strstream << r;
            return l;
        }
 
    friend VisualScreen& operator << (VisualScreen &l, std::ostream & (*manip)(std::ostream &)){
            manip(l._strstream);
            return l;
        }
 
    /* . . . */
 
};
 
int main()
{
    VisualScreen vs;
    vs << 10 << 'y' << std::endl;
}
2
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.03.2014, 12:29
Привет! Вот еще темы с ответами:

C2678 бинарный ">>": не найден оператор, принимающий левый операнд типа "std::ostream" - C++
Код: #include &lt;iostream&gt; #include &lt;memory&gt; #include &lt;typeinfo&gt; #include &lt;ctime&gt; #include &lt;windows.h&gt; #include &lt;ostream&gt; ...

Error C2678: бинарный "<<": не найден оператор, принимающий левый операнд типа "std::ifstream" - C++
Собственно, текст ошибки приведен в названии темы. Сам код: #include &quot;stdafx.h&quot; #include &lt;conio.h&gt; #include &lt;iomanip&gt; #include...

Error C2678: бинарный ">>": не найден оператор, принимающий левый операнд типа "std::istream" - C++
Вот ошибка 1&gt;------ Построение начато: проект: ыпошряоям, Конфигурация: Debug Win32 ------ 1&gt; файл.cpp 1&gt;c:\users\hp\desktop\уроки...

Бинарный ">>": не найден оператор, принимающий левый операнд типа "std::istream" - C++
Подскажите, пожалуйста, как решить проблему. Хочу перегрузить оператор ввода, но никак не пойму, в чем дело #include&lt;iostream&gt; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru