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

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

28.03.2010, 20:45. Показов 3513. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите, пожалуйста, реализовать перегрузку операторов умножения и присваивания для такого задания со строками:
"Описать класс, 3 объекта используя разные конструкторы; увеличить в 2 раза объект #3 удвоением каждого символа; сложить объекты #2 и #3 и результат присвоить объекту #1.
Вот код, который пока что написал:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
//main.cpp
#include "stdafx.h"
#include "row.h"
#include <iostream>
#include <string>
 
void main()
{
    Row* obj2 = new Row();
    Row* obj3 = new Row("brrrrr");
    Row* obj1 = obj2 + obj3;
    //Row.Output();
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//row.h
#include "stdafx.h"
#include <string>
#pragma once
using namespace std;
 
class Row
{
    private:
        char *data;
        
    public:
        Row();
        Row(char* v);
        Row(const Row &);
        int Dimension(int _res);
        void Output();
        
        Row* operator*(const Row& c);
        char* operator+(char* tmp);
        //Row operator=();
};
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
//cpp.cpp
#include "stdafx.h"
#include "row.h"
#include <iostream>
#include <string>
using namespace std;
const int n = 10;
 
Row::Row()
{
    data = NULL;
}
 
Row::Row(char* v)
{
    strcpy(data,v);
}
 
/*Row::Row(const Row &copy)
{
    data = copy.data;
}*/
 
/*Row* Row::operator*(const Row &c)
{   
    Row *tmp(*this);       //здесь я похоже написал полную чушь, не обращайте внимания.
    tmp.data *= c.data;   //
    return tmp;               //
}*/
 
char* Row::operator+(char* tmp)
{
    return(strcat(data,tmp));
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.03.2010, 20:45
Ответы с готовыми решениями:

Перегрузка операторов умножения и присваивания
Вечер добрый! Возникла проблема с перегрузкой операторов: dQuaternion dQuaternion :: operator*(dQuaternion&amp; QuatP) { dQuaternion...

Перегрузка операторов, оператор присваивания
Перегрузка операторов, запутано-намутано #include &quot;stdafx.h&quot; #include &quot;conio.h&quot; #include &lt;iostream&gt; using namespace::std; ...

Перегрузка операторов присваивания, ввода, вывода
Приветствую, помогите реализовать перегрузку операторов(в частности операторы присваивания, ввода, вывода) для данной программы. Я не могу...

1
0 / 0 / 1
Регистрация: 28.03.2010
Сообщений: 9
31.03.2010, 17:17  [ТС]
Вот такой код сейчас. Выбивает ошибку, когда инициализирую объект L3.

illegal, left operand has type Row *
illegal, right operand has type Row*

Помогите исправить.

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
#include "stdafx.h"
#include "row.h"
#include <iostream>
#include <string>
using namespace std;
const int n = 2;
 
class Row
{
    private:
        char *data;
        
    public:
        Row();
        Row(char* v);
        Row(Row &);
        
        Row* operator*(Row *c);
        Row* operator+(Row *c);
        Row* operator=(Row *h);
 
        int Dimension();
        void Out();
};
/**************************/
Row::Row()
{
    data = NULL;
}
 
Row::Row(char* v)
{
    data = v;
}
 
Row::Row(Row &copy)
{
    data = copy.data;
}
 
int Row::Dimension()
{
    int res0 = strlen(data);
    return res0;
}
 
void Row::Out()
{
    cout << "stroka: " << data << endl;
}
 
Row* Row::operator*(Row *c)
{   
    char *tmp = new char[strlen(data)];
    tmp = data;
    
    int len = strlen(data);
    for(int i = 0; i < len; i++)
    {
        for(int j = 0; j < n; j++)
        {
            tmp[i*n*j] = data[j];
        }
    }
    
    Row *res = new Row(tmp);
    return res;
}
 
Row* Row::operator+(Row *c)
{
    int len = strlen(data);
    char *tmp = new char[len+1];
    strcpy(tmp,data);
    strcat(tmp,c->data);
 
    Row *res1 = new Row(tmp);
    return res1;
}
 
Row* Row::operator=(Row *h)
{
    Row* res3 = new Row();
    res3 = h;
    return res3;
}
 
#include "stdafx.h"
#include "row.h"
#include <iostream>
#include <string>
/**********************/
void main()
{
    Row* L3 = new Row("abc");
    Row* L2(L3);
 
    Row L1 = (L3*L3) + L2;
 
    L3->Out();
    cout << "Dlinna L3: " << L2->Dimension() << endl;
 
    L1.Out();
    cout << "Dlinna L1: " << L1.Dimension() << endl;    
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
31.03.2010, 17:17
Помогаю со студенческими работами здесь

Перегрузка операторов сложения и присваивания
Пишу класс для длинной арифметики, перегружаю операторы. Числа храню в массивах по 8 uint. В заголовке: uint256(QString init);...

Команды присваивания и перегрузка операторов
Не получается выполнить неявное приведение типа (из типа string к типу MyClass). Да и в целом по задаче хотел бы услышать комментарии. ...

Перегрузка операторов вывода для русификации строк
#include &lt;iostream&gt; #include &lt;string&gt; #include &lt;windows.h&gt; using namespace std; friend ostream operator &lt;&lt; (ostream &amp;in,...

Перегрузка операторов сложения и умножения
По условию задачи мне необходимо получить сумму и произведение двух матриц с помощью перегрузки операторов сложения и умножения...

Перегрузка операторов сложения, вычитания и умножения двух векторов
Помогите пожалуйста. Мне надо сделать перегрузку сложения двух векторов, вычитания дух векторов, умножение двух векторов. И перегрузку...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
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