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

Перегрузка << для вектора - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Действия со строками http://www.cyberforum.ru/cpp-beginners/thread210380.html
16.Составить программу на СИ. Где дан текст. Определить, встречается ли в нем заданное слово, если да – то сколько раз.
C++ Вычислить площадь фигуры ограниченной линиями Ребят помогите плс!Задачка никак не получается((( Постановка задачи. Вычислить площадь фигуры ограниченной линиями f1(x) и f2(x) (табл.1). Для вычисления площади фигуры ограниченной линиями... http://www.cyberforum.ru/cpp-beginners/thread210370.html
Ввести строку и слово. Определить и вывести, сколько раз встречаются в строке буквы, перечисленные в слове. C++
Ввести строку и слово. Определить и вывести, сколько раз встречаются в строке буквы, перечисленные в слове. Ha Cu. Заранее спасибо за помошь.
C++ Одиночное наследование классов.
Реализовать наследование классов, их конструкторов, и если необходимо деструкторов, для своего варианта. Продемонстрировать в программе работу функций классов. Создать класс Fruit, содержащий...
C++ Перегрузка функций http://www.cyberforum.ru/cpp-beginners/thread210364.html
Для соответствующего класса, перегрузить арифметические операции(+,-,*,/). При перезгузке арифметические действия должны выполняться относительно только числовых полей!!! Создать несколько объектов...
C++ Найти самое короткое слово. Строки помогите бедной студентке =) Условие) Строки. Дан текст. Найти самое короткое слово. подробнее

Показать сообщение отдельно
Aye Aye
367 / 281 / 36
Регистрация: 17.12.2009
Сообщений: 567
14.12.2010, 11:05
потому, что в не исправленном операторе она записывается в другой временный вектор, который тут же уничтожается, твой tr_vect вызывает всего один operator<<, остальные операторы вызываются временными объектами.
например запись: a + b
значит тоже что и запись: a.operator+(b)
Вот смотри, до того как ты исправил у тебя было так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
my_vector tr_vect; // глобальная по отношению к последующим областям видимости
{
    tr_vect << std::string("zero");
}
{
    my_vector new_temporary_variable1; // локальная
    new_temporary_variable1 << std::string("one");
}
{
    my_vector new_temporary_variable2; // локальная
    new_temporary_variable2 << std::string("two")
}
а после исправления стало так:
C++
1
((tr_vect.operaor<<(std::string("zero"))).operator<<(std::string("one"))).operator<<(std::string("two")) // и т. д.
типа сначала оператор вызывается для из tr_vect для строки "zero" и возвращает ссылку на этот же объект, потом этот объект взят в скобочки, видишь... из него вызывается второй оператор для "one" и так далее.

Добавлено через 19 минут
я тут ошибся случайно в посте №2
Цитата Сообщение от Aye Aye Посмотреть сообщение
создается дофига временных объектов типа str_vect, в каждый из который вставляется строка.
создаются объекты типа my_vector конечно же!
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru