Форум программистов, компьютерный форум 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++ Найти самое короткое слово. Строки помогите бедной студентке =) Условие) Строки. Дан текст. Найти самое короткое слово. подробнее

Показать сообщение отдельно
norge_goth
62 / 62 / 7
Регистрация: 27.01.2009
Сообщений: 279

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

13.12.2010, 22:05. Просмотров 590. Ответов 8
Метки (Все метки)

Добрый день,
перегружаю оператор "<<" для вектора который содержит строки так вот - возник вопрос почему
перегрузить можно только вне класса? например
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
32
33
34
35
36
#include <iostream>
#include <stdlib.h>
#include <string>
#include <vector>
 
using std::cout;
using std::cin;
using std::endl;
 
typedef std::vector<std::string> str_vect;
 
 
class my_vector : public str_vect
{
public:
    my_vector operator<<(std::string str)
    {
        this->push_back(str);
        return *this;
    }
};
 
int main ()
{
    my_vector str_vect;
 
    // fill string vector
    str_vect << std::string("zero") << std::string("one") << std::string("two") << std::string("three") << std::string("four")
            << std::string("five") << std::string("six") << std::string("seven") << std::string("eight") << std::string("nine");
 
    cout << str_vect.back() << endl;
 
    system("PAUSE");
    return 0;
 
}
В результате выводит "zero", что говорит о том что операторная ф-ция сработала только раз, а если перегрузить вне класса и передать два параметра все норм, напр.
C++
1
2
3
4
5
str_vect& operator<<(str_vect &vect, std::string str)
{
    vect.push_back(str);
    return vect;
}
почему нельзя перегружать через ф-цию-член?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru