Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 13.01.2015
Сообщений: 13

Перегрузить оператор сложения для вектора

08.06.2015, 23:31. Показов 1432. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет! не компилируется, понять не могу почему, ругается на оператор присваивания, не можжет сложить
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
#include <windows.h>
#include <iostream>
#include <stdio.h>
#include <math.h>
#include <ctime>
#include <vector>
using namespace std;
 
class Iterator
{
friend class Vectors;
public:
    Iterator() {Element=0;};
    Iterator(Iterator &Iter) {Element=Iter.Element;};
    bool operator==(Iterator &Iter){return Element==Iter.Element;};
    bool operator!=(Iterator &Iter){return Element!=Iter.Element;};
    void operator++(){++Element;};
    void operator--(){--Element;};
    int &operator *(){return *Element;};
protected:
    int *Element;
};
 
class Vectors
{
friend ostream& operator<< (ostream&out, Vectors &Vect);
friend istream& operator>> (istream&in, Vectors &Vect);
public:
    Vectors (int nNumOfElm, int nZnach=0)
    {
        Size=nNumOfElm;
        Data=new int[Size];
        for (int i=0; i<Size; i++)
            Data[i]=nZnach;
        Begin.Element=&Data[0];
        End.Element=&Data[Size];
    }
    Vectors (const Vectors &VCopy)
    {
        Size=VCopy.Size;
        Data=new int[Size];
        for (int i=0; i<Size; i++)
            Data[i]=VCopy.Data[i];
        Begin=VCopy.Begin;
        End=VCopy.End;
    }
    Vectors &operator= (Vectors &Vector)
    {
        if (this==&Vector) return *this;
        Size=Vector.Size;
        if (Data!=0) delete []Data;
        Data=new int[Size];
        for (int i=0;i<Size; i++)
        {
            Data[i]=Vector.Data[i];
        }
        Begin=Vector.Begin;
        End=Vector.End;
        return *this;
    }
    int &operator[] (int Index)
    {
        if (Index<Size) return Data[Index];
        else cout << "\nВведен не верных номер.\n";
    }
    Vectors operator+(int K)
    {
        Vectors TempVector(Size);
        for (int i=0; i<Size; i++)
            TempVector.Data[i]+=(Data[i]+K);
        return TempVector;
    }
    int operator()()
    {
        return Size;
    }
Iterator First(){return Begin;};
Iterator Last(){return End;};
protected:
    int Size;
    int *Data;
    Iterator Begin;
    Iterator End;
 };
 
ostream& operator<< (ostream&out, Vectors &Vect)
{
    for (int i=0; i<Vect.Size; i++)
    {
        out<< Vect.Data[i]<<"\t";
    };
    return out;
}
istream& operator>> (istream&in, Vectors &Vect)
{
    for (int i=0; i<Vect.Size; i++)
    {
        in>> Vect.Data[i];
    };
    return in;
}
 
 
 
int main()
{
            SetConsoleCP(1251);
            SetConsoleOutputCP(1251);
            cout << "---------------------------------------------------------------------\n";
            cout << "Создадим вектор из 5 элемнетов, заполненных нулями:\n";
            Vectors Vec1(5);
            cout << "Введите значения элементов:\n";
            cout << Vec1 << "\n";
            cout << "---------------------------------------------------------------------\n";
            cin >> Vec1;
            cout << "\n" << Vec1 << "\n";
            cout << "---------------------------------------------------------------------\n"
            << "Присвоим значению 3 - 99:";
            Vec1[2]=99;
            cout << "\n" << Vec1 << "\n";
            cout << "---------------------------------------------------------------------\n";
            cout << "Создадим вектор из 10 элемнетов, заполненных нулями:\n";
            Vectors Vec2(10);
            cout << "\n" << Vec2 << "\n";
            cout << "---------------------------------------------------------------------\n";
            cout << "Присвоим значения вектора 1, 2ому";
            Vec2=Vec1;
            cout << "\n" << Vec2 << "\n";
            cout << "---------------------------------------------------------------------\n";
            cout << "Создадим еще вектор из 10 элемнетов, заполненных нулями:\n";
            Vectors Vec3(10);
            cout << "\n" << Vec3 << "\n";
            cout << "---------------------------------------------------------------------\n";
            cout << " Добавим к каждому элементу 25: ";
            Vec3=Vec2+Vec1; - вот тут... честно не понимаю
            cout << "\n" << Vec2 << "\n";
            cout << "---------------------------------------------------------------------\n";
    return 0;
}
подскажите пожалуйста

Добавлено через 52 секунды
Там надо сделать так чтоб Vec3=Vec2+20 например, только не могу чего то сделать
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.06.2015, 23:31
Ответы с готовыми решениями:

Как перегрузить оператор вывода в поток для вектора?
Стало интересно реализовать подобный функционал, и конечно же ничего не работает. При этом коде: template&lt;class T&gt; ...

Для шаблонного класса перегрузить оператор присваивания, copy-конструктор, объекты cin и cout, оператор *
Помогите в следующем: Для класса шаблона следует перегрузить оператор присваивания, конструктор копирования, бинарный оператор суммы «*»,...

Перегрузить операцию сложения для класса дробей
Люди добрые, помогите инвалиду;) Нужно написать программу на Си, задача такова: Перегрузить операцию сложения для класса дробей и...

4
23 / 23 / 14
Регистрация: 01.05.2015
Сообщений: 180
09.06.2015, 05:12
Если заранее известно что векторы одинакового размера, то думаю сложение нужно проводить также в цикле типа
C++
1
2
3
4
 for (int i (0); i < Vec3.size(); i++)
            {
                Vec3[i] = Vec2[i] + Vec1[i];
            }
1
0 / 0 / 0
Регистрация: 13.01.2015
Сообщений: 13
09.06.2015, 05:31  [ТС]
Спасибо, решение тоже нашел сам, там не много по другому получилось чем хотел но получилось. Получилось по крайней мере вот так
C++
1
2
3
4
5
6
7
8
9
    void operator+(int K)
    {
 
        for (int i=0; i<Size; i++)
            {Data[i]+=K;};
 
    }
 
Vec3+25;
Тогда она складывает, сразу присвоить не получается) но зато все работает)

Добавлено через 1 минуту
Скажем так в этом и суть была перегрузки оператора сложения) чтоб складывать вектора а не их значения в их цикле)
0
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
09.06.2015, 09:10
Цитата Сообщение от Alexander273 Посмотреть сообщение
чтоб складывать вектора а не их значения
Как это понять? Что вы пытались сделать вообще?
0
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
09.06.2015, 09:44
Может ТС имел ввиду вычисление размера ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.06.2015, 09:44
Помогаю со студенческими работами здесь

Для класса, хранящего список чисел, перегрузить операторы сложения и вычитания
Для класса, хранящего список чисел, перегрузить операторы сложения и вычитания числа так, чтобы они добавляли и удаляли соответствующий...

Перегрузить для класса оператор ==
немогу написать продолжение кода... нужно написать : перегрузить для данного класса оператор ==, вычисляющий пробег автомобиля с...

Перегрузить оператор << для структуры List
В общем пытаюсь перегрузить оператор передачи в поток для структуры, но что-то видимо делаю не так. Вопрос : что? #include...

Перегрузить оператор ++ для одномерных массивов
Перегрузить оператор ++ для одномерных массивов;

Перегрузить оператор присваивания для класса
Помогите, пожалуйста. Требуется написать оператор присваивания для данного класса class ARRAY{ int size; double **m; public: ...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru