Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C++ Ликбез по динамическим библиотекам Динамические библиотеки. 1 Можно подключить к проекту указав путь к самой библиотеке и к заголовочным файлам. Какие требования в таком случае к функциям которые находятся в библиотеке? Разные _cdecl extern "c" нужны? 2 Подключаем библиотеку с помощью QLibrary(так как я работаю в Qt то использую ее). Какие требования к функциям в этом случае. Во втором случае насколько я понял заголовочные... https://www.cyberforum.ru/ cpp-beginners/ thread1718608.html C++ Ключевое слово this
Можно какой-нибудь простой пример, чтобы понять зачем это нужно?
C++ Stl переворачивание списка https://www.cyberforum.ru/ cpp-beginners/ thread1718601.html
Пишу программу для переворачивания списка: #include <iostream> #include <list> #include <algorithm> using namespace std; ////////////////////////////////////////////// int main(){ list<int> lst; //~ char ch='y';
C++ Ошибки в коде программы) https://www.cyberforum.ru/ cpp-beginners/ thread1718593.html
#include <iostream> #include <cstdlib> using namespace std; int main() { int n; int c = 0; cout « "Razmer massiva:" « endl; cin » n;
C++ Перевод с Паскаля на си++
Помогите перевести на си++. uses crt; const gl=; var s:string; i:byte; begin clrscr; writeln('Введите текст из строчных русских букв:');
C++ Работа со строками Задача: После каждой гласной буквы х в последовательности слов, разделенных пробелами, вставить буквосочетание рхсх (например, слово порядок преобразуется в поросорярясядоросок). Помогите, люди добрые, новичку. Ну никак разобраться не могу :с https://www.cyberforum.ru/ cpp-beginners/ thread1718578.html
C++ Двухмерный динамический массив. Создать "рваный массив" Создать "рваный массив": а)убывающий ***** **** ** * б)возрастающий * https://www.cyberforum.ru/ cpp-beginners/ thread1718566.html Найти в каждой строке наибольший элемент и удалить строку с наименьшим элементом C++
В каждой строке найти наибольший элемент. Из этих элементов найти наименьший и удалить ту строку, которой он принадлежит.
C++ Использование RGB в консоли Здравствуйте. Подскажите, как менять цвета шрифта/цвета в консоли, задавая его через РГБ? (16, которые можно ставить через винапи, наскучили уже :с) https://www.cyberforum.ru/ cpp-beginners/ thread1718544.html C++ Считать в буфер содержимое первых и последних строк всех файлов https://www.cyberforum.ru/ cpp-beginners/ thread1718543.html
Есть указатель на массив имён файлов. Считать в буфер содержимое первых и последних строк всех файлов.
В каждой строке матрицы определить последний отрицательный элемент и его индексы - C++ C++
Вот то, что я набросал, а дальше у меня дело не продвигается. #include<iostream> #include<windows.h> #include<time.h> using namespace std; int main() { const int n=5,m=5; int Mas;
C++ процедуры по треугольникам Даны действительные числа x1, y1, x2, y2, ..., x6, y6. Точки с координатами (x1, y1), (x2, y2), (x3, y3) рассматриваются как вершины первого треугольника, точки с координатами (x4, y4), (x5, y5), (x6, y6)— второго треугольника. Выяснить, верно ли, что первый треугольник целиком содержится во втором, и если да, определить площадь области, принадлежащей внешнему треугольнику и не принадлежащей... https://www.cyberforum.ru/ cpp-beginners/ thread1718526.html
3 / 3 / 8
Регистрация: 14.10.2012
Сообщений: 288
0

Передача объектов в аргументы метода - C++ - Ответ 9058449

23.04.2016, 00:46. Показов 428. Ответов 1
Метки (Все метки)

Author24 — интернет-сервис помощи студентам
Есть программа. Мне нужно было написать несколько перегруженных операторов.
Вот собственно весь код:
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
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
class String{
    char *str;
    int length;
public:
    String();
    String(char *buf_str);
    String(const String &copy);
    ~String();
 
    String& operator + (const String &right);
    String& operator * (const String &right);
    String& operator = (const String &right);
    String& operator - (const String &right);
 
    String get_lot(String &a, String &b);
 
    char *get_string();
};
 
String &String::operator + (const String &right)
{
    String result;
    delete result.str;
    result.length = length + right.length;
    result.str = new char[result.length + 1];
    strcpy(result.str, str);
    strcpy(result.str + length, right.str);
 
    return result;
}
 
String &String::operator = (const String &right)
{
    delete []str;
    length = right.length;
    str = new char[length + 1];
    strcpy(str, right.str);
 
    return *this;
}
 
String &String::operator * (const String &right_2)
{
    String temp;
    char *tmp = NULL;
 
    temp.str = new char[1];
    temp.str[0] = '\0';
 
    for(int i = 0; i < strlen(str); i++)
    {
        for(int j = 0; j < right_2.length; j++)
        {
            if(str[i] == right_2.str[j])
            {
                tmp = new char[temp.length + 1];
                strcpy(tmp, temp.str);
                delete []temp.str;
                temp.length++;
                temp.str = new char[temp.length+1];
                strcpy(temp.str, tmp);
                temp.str[temp.length-1] = str[i];
                temp.str[temp.length] = '\0';
                delete []tmp;
            }
        }
    }
    cout << temp.get_string() << endl;
    return temp;
}
 
String &String::operator - (const String &rigght)
{
    String temp;
    char *tmp = NULL;
    int count = 0;
    temp.str = new char[1];
    temp.str[0] = '\0';
 
    for(int i = 0; i < strlen(str); i++)
    {
        for(int j = 0; j < rigght.length; j++)
        {
            if(str[i] != rigght.str[j])
            {
                count++;
                if(count == strlen(rigght.str))
                {
                    tmp = new char[temp.length + 1];
                    strcpy(tmp, temp.str);
                    delete []temp.str;
                    temp.length++;
                    temp.str = new char[temp.length+1];
                    strcpy(temp.str, tmp);
                    temp.str[temp.length-1] = str[i];
                    temp.str[temp.length] = '\0';
                    delete []tmp;
                }
            }
        }
        count = 0;
    }
 
    return temp;
}
 
String::String()
{
    str = NULL;
    length = 0;
}
 
 String::String(const String &copy)
 {
     length = copy.length;
     str = new char[length+1];
     for(int i = 0; i < length; i++)
        str[i] = copy.str[i];
     str[length] = '\0';
 }
 
String::~String()
{
    delete []str;
}
 
String::String(char *buf_str)
{
    length = strlen(buf_str);
    str = new char[length + 1];
    for(int i = 0; i < length; i++)
        str[i] = buf_str[i];
    str[length] = '\0';
}
 
char *String::get_string()
{
    return str;
}
 
String String::get_lot( String &a,  String &b)
{
    String temp_1,
           temp_2,
           temp_3 = String(a),
           temp_4 = String(b);
 
    temp_1 = temp_3 + temp_4;
    temp_2 = temp_3 * temp_4;
 
    cout << "a * b =" << temp_2.get_string() << endl;
    cout << "a * b =" << temp_1.get_string() << endl;
 
    return temp_2;
}
int main()
{
    String obj[2];
    char str_1[4] = "124";
    char str_2[5] = "345";
    String obj_2, obj_3;
    String ob;
 
    obj[1] = String(str_1);
    obj[2] = String(str_2);
    obj_2 = obj[1] + obj[2];
    obj_3 = obj[1] * obj[2];
    ob = ob.get_lot(obj[1], obj[2]);
 
    cout << str_1 << " + " << str_2 << " = " << obj_2.get_string() << endl;
    cout << str_1 << " * " << str_2 << " = " << obj_3.get_string() << endl;
    cout << str_1 << " - " << str_2 << " = " << (obj[1] - obj[2]).get_string() << endl;
 
    return 0;
}
Такой вопрос: я передаю в функцию объекты класса,с помощью написанных перегруженных операторов нужно выполнить некоторые преобразования над строками.
Выполняется это в функции
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
String String::get_lot(String &a, String &b)
{
    String temp_1,
           temp_2,
           temp_3 = String(a),
           temp_4 = String(b);
 
    temp_1 = temp_3 + temp_4;
    temp_2 = temp_3 * temp_4;
 
    cout << "a * b =" << temp_2.get_string() << endl;
    cout << "a * b =" << temp_1.get_string() << endl;
 
    return temp_2;
}
почему в этой функции перегруженный оператор +(конкатенация строк) выполняется правильно, а оператор *(пересечение) выдает мусор. При этом когда я в main'e пишу
C++
1
     (obj[1] * obj[2]).get_string()
А
C++
1
2
obj = (obj[1] * obj[2]);
obj.get_string()
Тоже не работает?

Вернуться к обсуждению:
Передача объектов в аргументы метода C++
1
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.04.2016, 00:46
Готовые ответы и решения:

Невозможно передать ArrayList в аргументы метода без модификатора static у этого метода или метода main
Крч, хочу передать экземпляр класса ArrayList в метод, но ide говорит, что нельзя это сделать, пока...

Как сделать чтоб аргументы метода пользователь вводил с консоли а не в скобках метода во внешнем коде?
доброго времени суток!!! Помогите плиз!!! как сделать чтоб аргументы метода пользователь вводил...

Аргументы метода
Господа, помогите, изучаю шилдта и наткнулся на несколько оченб странных примеров. Вот один из них...

Аргументы метода parseInt
public class ClassOne { public static void main (String args){ int x...

1
23.04.2016, 00:46
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.04.2016, 00:46
Помогаю со студенческими работами здесь

Аргументы метода Main
Когда вывожу на консоль вот эту программу: using System; class program { static void...

Аргументы метода сервиса.
Подскажите пожалуйста: Есть WCF сервис, он содержит метод: public string Method(List&lt;string&gt; list)...

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

Аргументы шаблонного метода как объекты
Не могу решить одну задачу. вот три класса class win {}; class obj1 {}; class obj2 {};

Как вывести аргументы метода по отдельности?
class Program { static int Calculate(int A,int B,int C) { ...

Передать делегат с параметрами в аргументы метода
Вообщем нашел способ как вызывать ивенты с любого класса, и что б в подписчике был доступ к любому...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru