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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Действия со строками http://www.cyberforum.ru/cpp-beginners/thread210380.html
16.Составить программу на СИ. Где дан текст. Определить, встречается ли в нем заданное слово, если да – то сколько раз.
C++ Вычислить площадь фигуры ограниченной линиями Ребят помогите плс!Задачка никак не получается((( Постановка задачи. Вычислить площадь фигуры ограниченной линиями f1(x) и f2(x) (табл.1). Для вычисления площади фигуры ограниченной линиями можно использовать итерационное выражение Si+1= Si + (f2(xi) – f1(xi)) dx , где S0 = 0 , x0 = 0 и i = 0, 1, 2...n . Я прикрепляю картинку с графиком и моей функцией..Нужно сделать через цикл while... http://www.cyberforum.ru/cpp-beginners/thread210370.html
Ввести строку и слово. Определить и вывести, сколько раз встречаются в строке буквы, перечисленные в слове. C++
Ввести строку и слово. Определить и вывести, сколько раз встречаются в строке буквы, перечисленные в слове. Ha Cu. Заранее спасибо за помошь.
C++ Одиночное наследование классов.
Реализовать наследование классов, их конструкторов, и если необходимо деструкторов, для своего варианта. Продемонстрировать в программе работу функций классов. Создать класс Fruit, содержащий следующие элементы: - поле «зрелость» int Ripeness; - поле «название» char* Name; - поле «цвет» char* Color; - метод получения зрелости int GetRipeness() ; - метод получения цвета char* GetColor();...
C++ Перегрузка функций http://www.cyberforum.ru/cpp-beginners/thread210364.html
Для соответствующего класса, перегрузить арифметические операции(+,-,*,/). При перезгузке арифметические действия должны выполняться относительно только числовых полей!!! Создать несколько объектов класса и проинициализировать их с помощью конструктора с параметрами. Создать несколько дополнительных объектов таким образом, чтобы: - первый объект являлся суммой двух других объектов; - второй...
C++ Некомпелируеца программа на DeviceIoControl Здраствуйте, помогите пожалуйсто, нашел в нете код, а он некомпелируеца, вот код: #include <cstdlib> #include <iostream> #include "windows.h" #include "iostream.h" typedef struct DIOCRegs { DWORD reg_EBX; DWORD reg_EDX; DWORD reg_ECX; DWORD reg_EAX; подробнее

Показать сообщение отдельно
norge_goth
62 / 62 / 7
Регистрация: 27.01.2009
Сообщений: 279
13.12.2010, 22:05     Перегрузка << для вектора
Добрый день,
перегружаю оператор "<<" для вектора который содержит строки так вот - возник вопрос почему
перегрузить можно только вне класса? например
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;
}
почему нельзя перегружать через ф-цию-член?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 09:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru