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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.94
yorick
0 / 0 / 0
Регистрация: 28.03.2010
Сообщений: 9
#1

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

28.03.2010, 20:45. Просмотров 2292. Ответов 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.03.2010, 20:45
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Перегрузка операторов умножения и присваивания для строк. (C++):

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

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

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

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

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

Перегрузка операторов и слияние строк типа char* - C++
Доброго времени суток! Есть класс, для объектов которого перегружен оператор +. Класс представляет собой массив строк типа char*. ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
yorick
0 / 0 / 0
Регистрация: 28.03.2010
Сообщений: 9
31.03.2010, 17:17  [ТС] #2
Вот такой код сейчас. Выбивает ошибку, когда инициализирую объект 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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.03.2010, 17:17
Привет! Вот еще темы с ответами:

Перегрузка присваивания для стека - C++
Пытаюсь написать перегрузку присваивания для стека. Как видно из кода ниже, я сначала с помошью конструктора копирования создаю временный...

Не используя никаких операций, кроме умножения и присваивания, составить программу, вычисляющую a7 за 4 операции умножения - C++
1.Дано число a. Не используя никаких операций, кроме умножения и присваивания, составить программу, вычисляющую a7 за 4 операции умножения;...

Класс строк, перегрузка операторов. Как вернуть объект класса - C++
Коротко: # include &quot;MyString.h&quot; void main () { My_String Address; Address = &quot;Link&quot;; Res = Address + &quot;OoO&quot;; } # ifndef...

Перегрузка операторов для контейнера - C++
Доброго времени суток. Просматривая STL, в ветке вектора наткнулся на такую интересную запись: vector&lt;int&gt; v1 = {45,85,68}; ...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru