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

Перегрузка операций! - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Создать абстрактный класс CVehicle http://www.cyberforum.ru/cpp-beginners/thread534157.html
Здравствуйте, товарищи! Задали задачу, не понимаю условие. Создать абстрактный класс CVehicle. На его основе реализовать классы CPlane, ССаг и CShip. Классы должны иметь возможность задавать и получать коорди* наты, параметры средств передвижения (цена, скорость, год выпуска). Для само* лета должна быть определена высота, для самолета и корабля — количество пас* сажиров. Для корабля —...
C++ Упорядочить элементы на главной диагонали по возрастанию Дана квадратная матрица целых чисел. Упорядочить элементы на главной диагонали по возрастанию http://www.cyberforum.ru/cpp-beginners/thread534155.html
C++ Файлы последовательного доступа
Программа должна быть разбита на несколько функций и обязательно содержать: 1. Функция формирования исходного файла; 2. Функция вывода результата работы программы; 3. Одну или более функций, реализующих вычислительную часть алгоритма. Основная программа должна содержать только операторы вызова подпрограмм. Дан текстовый файл f, состоящий из нескольких строк. Исключить пробелы, стоящие в...
Создать класс жидкость (доделать программу) C++
Создать класс "Жидкость" имеющий название (указатель на строку) плотность. определить конструкторы деструкторы и функцию печати,. создать публик производный класс - спиртные напитки, имеющий крепкость. Определить конструкторы по умолчанию и с разными числом параметров, деструкторы, функцию печати. определить функции переназначения плотности и крепости. Буду очень признателен.. Долго возился...
C++ На что ссылается итератор после remove(*it) http://www.cyberforum.ru/cpp-beginners/thread534145.html
Здравствуйте! Не понимаю, почему итератор ссылается на удаленный из списка элемент? #include <vcl> #include <iostream> #include <fstream> #include <list> #include <vector> #include <string> using namespace std;
C++ Односвязный список. Узел-запись о книге в библиотеке. Односвязный список. Узел-запись о книге в библиотеке: автор, название, имееться ли в наличии(если нет то фамилия читателя,которому выдана). Создать отдельный список книг свободных. Распечатать новый список!! С++ Помогите пожалусто.... Заранее спасибо подробнее

Показать сообщение отдельно
Kate_
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 43

Перегрузка операций! - C++

29.03.2012, 21:35. Просмотров 396. Ответов 3
Метки (Все метки)

Здравствуйте, у меня есть код (работы со строками)
и нужно перегрузить операцию чтобы данный класс (текст). мог прибавлять к себе другой текст(можно и тот же) код работает, вот только не знаю как это осуществить.
Это класс стринг
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
#include <iostream>
#include <string>
using namespace std;
 
class Row {
    char *str;
 
public:
 
    Row();
    Row( const Row& s); 
    Row(const string);
    ~Row();
    const char* GetRow ();
 
Row& operator +(const Row& s); 
friend Row operator +(Row blabla);
 
 
 
/*
friend ostream& operator<<(ostream& const Row& str)
friend istream& operator>>(istream& s,complex& a)   
*/
 
    void get();
    void put();
    void putchar(int, char);
    void delchar(int);
    void clearstr();
    char array[256];
};
 
/*конструктор за замовчуванням*/
Row::Row() 
{str = new char[80];}
 
 
/* Деструктор */
Row::~Row(){
if(str!=NULL)
delete[] str;
str=NULL;
}
 
/*конструктор з параметрами*/
Row::Row(const string a) {
    this->str = new char[a.length()];
    for (int i = 0; i < a.length(); i++)
        str[i] = a[i];
    for (int j = a.length(); j < 80; j++) 
        str[j] = '\0';}
 
/*конструктор копіювання*/
Row::Row(const Row &str){ 
this->str = new char[80];
    for(int i = 0; i < 80; i++) {
        this ->str[i] = str.str[i];}
}
 
void Row::get() {
    cout << "\t";
    gets(str);
}
 
void Row::put() {
    puts(str);
}
 
 
void Row::putchar(int i, char z) {
    for(int j = 78; j > i-2; j--) {
        str[j+1] = str[j];
    }
    str[i-1] = z;
}
 
 
void Row::delchar(int i) {
    for(int j = i - 1; j < 80; j++) {
        str[j] = str[j+1];
    }
}
 
 
void Row::clearstr() {
    for (int i = 0; i < 80; i++) {
        str[i] = '\0';
    }
}
/*
Row& Row::operator +(const Row& s)
{
 
 
}*/
========================
Это класс текст в агригации со стрингом
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
 
#include <iostream>
using namespace std;
 
class Text {
     Row *text;
     int nums;
public:
     Text();
     Text(int);
     void add(const Row&);
     void print();
     void delstring(int);
};
 
 
/*конструктор за замовчуванням*/
Text::Text() {
this->  text = new Row[1];
    nums = 0;
}
 
 
/*конструктор з параметрами*/
Text::Text(int stramount) {
this ->text = new Row[stramount];
    nums = 0;
}
 
 
void Text::add(const Row& string) {
    text[nums] = string;
    nums++;
}
 
 
void Text::print() {
    for(int i = 0; i < nums; i++) {
        cout << "\t";
        text[i].put();
    }
}
 
 
void Text::delstring(int n) {
    for(int i = n - 1; i < nums - 1; i++) {
        text[i] = text[i+1];
    }
    text[nums - 1].~Row();
    nums--;
}
==============
а здесь я ввожу сам текст
============
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
#include <iostream>
#include <cstring>
#include <cstdio>
#include "strings.h"
#include "text.h"
 
using namespace std;
 
int main() {
    Text t1(3);
    Row str1, str2, str3,str4;
    setlocale(LC_CTYPE,"Russian");
    cout << "Введiть текст ";
    str1.get();
    t1.add(str1);
    str2.get();
    t1.add(str2);
    str3.get();
    t1.add(str3);
    cout << "Текст 1 \n: "<<endl;;
    t1.print();
    
    /*вставка символа в рядок*/
    str1.putchar(5, 'DD');
    cout << "Текст 2 \n: ";
    t1.print();
 
    /*видалення символа з рядка*/
    str1.delchar(5);
    cout << "Текст 3: \n "<<endl;
    t1.print();
 
 
    /*очищення рядка*/
    str2.clearstr();
    cout << "Tекст 4 \n: "<<endl;
    t1.print();
 
    cin.get();
    cin.get();
    return 0;
}
Буду очень признательна,спасибо
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru