Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.97/30: Рейтинг темы: голосов - 30, средняя оценка - 4.97
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116

Перегрузка оператора +

02.08.2014, 17:56. Показов 7974. Ответов 83
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
не получается в своем классе перегрузить оператор + пишет "error C2804: бинарный "operator +" имеет слишком много параметров", действительно задал 2 параметра, но как еще то? ведь + и подразумевает собой сложение 2х значений...
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.08.2014, 17:56
Ответы с готовыми решениями:

Перегрузка оператора ^
Здравствуйте! Необходимо перегрузить бинарный оператор ^ для транспонирования матрицы. Есть класс матрицы: template <class T> ...

Перегрузка оператора +
Написал для перегрузки оператора + class BoolMatrix { private: int feet; public: BoolMatrix(int f): feet(f) {} ...

перегрузка оператора!
Помогите сложить диагонали , при помоши перегрузки оператора+, чтобы можно было написать в maine: c1+c2+c3.заранее спасибо! ...

83
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,876
02.08.2014, 21:28
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от GetHelp Посмотреть сообщение
Необработанное исключение по адресу 0x77ED40E3 (msvcr120d.dll) в string.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0xCCCCCCCC."
где то память не выделилась
указатель есть но указывает в космос
0
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
02.08.2014, 21:29  [ТС]
Цитата Сообщение от ValeryS Посмотреть сообщение
А зачем ты здесь вызываешь метод???
можно так
C++
1
size = str.size;
Цитата Сообщение от ValeryS Посмотреть сообщение
C++
1
strcpy(ptr, str.ptr);
ну может потому что у меня size и ptr не в protected секции... хотя возможно действительно есть смысл их туда перенести...
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,876
02.08.2014, 21:32
Цитата Сообщение от GetHelp Посмотреть сообщение
ну может потому что у меня size и ptr не в protected секции...
класс обращается сам к себе
может лезть куда угодно, даже к приватным
0
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
02.08.2014, 21:32
Цитата Сообщение от GetHelp Посмотреть сообщение
у меня size и ptr не в protected секции
protected - имеет смысл в случае иерархии. Тут класс один -> нет повода для протектеда совсем.
0
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
02.08.2014, 21:34  [ТС]
Цитата Сообщение от ValeryS Посмотреть сообщение
класс обращается сам к себе
может лезть куда угодно, даже к приватным
str передана в параметре, класс обращается не сам к себе а к другому объекту того же класса

Добавлено через 54 секунды
Цитата Сообщение от 0x10 Посмотреть сообщение
protected - имеет смысл в случае иерархии. Тут класс один -> нет повода для протектеда совсем.
если не будет protected то как ты будешь к str обращаться? нету там доступа к private членам...
0
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
02.08.2014, 21:35
Цитата Сообщение от GetHelp Посмотреть сообщение
к другому объекту того же класса
Достаточное условие для доступа к приватной части. Класс знает свое внутреннее устройство -> знает внутренности других объектов своего же типа.
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,876
02.08.2014, 21:35
Цитата Сообщение от GetHelp Посмотреть сообщение
выкидывает "Необработанное исключение по адресу 0x77ED40E3 (msvcr120d.dll) в string.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0xCCCCCCCC." на строке 74
судя по Дллке ты пишешь в Вижуале
тогда при ошибке нажми продолжить
выскочит еще раз табличка, нажми остановить
тебя кинет в отладчик
там в окне стека можешь проследить кто бяку сделал
0
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
02.08.2014, 21:37  [ТС]
Цитата Сообщение от 0x10 Посмотреть сообщение
Достаточное условие для доступа к приватной части. Класс знает свое внутреннее устройство -> знает внутренности других объектов своего же типа.
аа все да был не прав, действительно доступ есть...

Добавлено через 54 секунды
ValeryS, она просто продолжает выскакивать
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,876
02.08.2014, 21:38
Цитата Сообщение от GetHelp Посмотреть сообщение
str передана в параметре, класс обращается не сам к себе а к другому объекту того же класса
а теперь переведи
класс обращается к объекту
класс это описание
объект класса обращается к обращается к другому объекту того же класса
класс обращается к к классу
объекты разные описание одно
0
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
02.08.2014, 21:38  [ТС]
Цитата Сообщение от ValeryS Посмотреть сообщение
а теперь переведи
класс обращается к объекту
класс это описание
объект класса обращается к обращается к другому объекту того же класса
класс обращается к к классу
объекты разные описание одно
ага ок уже понял...
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,876
02.08.2014, 21:39
Цитата Сообщение от GetHelp Посмотреть сообщение
ValeryS, она просто продолжает выскакивать
вот когда продолжает выскакивать нажми остановить, или как там называется
у каждой версии свои имена
0
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
02.08.2014, 21:43  [ТС]
Цитата Сообщение от ValeryS Посмотреть сообщение
вот когда продолжает выскакивать нажми остановить, или как там называется
нету такого...
Миниатюры
Перегрузка оператора +  
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,876
02.08.2014, 21:48
тогда "Прервать"
но только на второй раз
иначе программа просто перестанет работать
0
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
02.08.2014, 21:50  [ТС]
Цитата Сообщение от ValeryS Посмотреть сообщение
тогда "Прервать"
но только на второй раз
иначе программа просто перестанет работать
так и есть... как не колдуй просто окошко с исключением закрывается и программа стоит...
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
02.08.2014, 21:51
GetHelp, вот код на быструю руку, я не стал править ваш класс, а написал то что "must have" в классе строка http://codepad.org/tyByCrJp
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
#include <iostream>
using namespace std;
 
class String
{
protected :
    char * text;
    long   size;
public:
    String(){
        text = 0;
        size = 0; 
    }
    String(const char * str = 0) {
        if( str )
        {
            size = strlen(str);
            text = new char[1 + size];
            size = sprintf(text, "%s", str);
            text[size] = 0;
        }
        else
        {
            text = 0;
            size = 0;
        }
    }
    String(const String &pCopy){
        size = pCopy.size;
        text = new char[1 + size];
        size = sprintf(text, "%s", pCopy.text);
        text[size] = 0;
    }
    String operator + (const char * str) {
        char * buf = text;
        size= strlen(str);
        text = new char[1 + size];
        if( buf )
        size = sprintf(text, "%s%s",buf, str);
        else    
        size = sprintf(text, "%s", str);
        text[size] = 0;
        return *this;
    }
    String operator + (const String &pCopy){
        return operator + (pCopy.text);
    }
    char * get_text(){return text;}
    long   get_size(){return size;}
};
 
int main(){
    String str = "test";
    cout<<str.get_text()<<endl;
    str =  str + "data";
    cout<<str.get_text()<<endl;
    str = String("next") + "test";
    cout<<str.get_text()<<endl;
    return 0;
}
Output:
test
testdata
nexttest
0
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
02.08.2014, 21:51  [ТС]
да фиг с ним с отладчиком... врятли я что то найду полезное в ассемблерном коде... тут нужно мой код смотреть, я вот пока не вижу ошибок... может вы увидите...
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
02.08.2014, 21:53
Не надо выделять через calloc/malloc/realloc, а освобождать через delete. Это совершенно разные механизмы.
Выделяешь malloc - освобождай free. Выделяешь new - освобождаешь delete.
2
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,876
02.08.2014, 22:00
Цитата Сообщение от Tulosba Посмотреть сообщение
Не надо выделять через calloc/malloc/realloc, а освобождать через delete.
а я этого не заметил
Цитата Сообщение от GetHelp Посмотреть сообщение
да фиг с ним с отладчиком...
ну это ты, сгоряча
Цитата Сообщение от GetHelp Посмотреть сообщение
врятли я что то найду полезное в ассемблерном коде...
там не ассемблерный а вполне себе сишный код, что написал то и высветится
Цитата Сообщение от GetHelp Посмотреть сообщение
просто окошко с исключением закрывается и программа стоит...
покажи как стоит? может ты уже в отладчик залез
0
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
02.08.2014, 22:07  [ТС]
-=ЮрА=-, так уже интересно, кое что полезное взял, но не могу протестить, вы забыли дописать перегрузку оператора присваивания на ней у меня как раз сейчас все стопорится... а она точно нужна...
Цитата Сообщение от Tulosba Посмотреть сообщение
Не надо выделять через calloc/malloc/realloc, а освобождать через delete. Это совершенно разные механизмы.
Выделяешь malloc - освобождай free. Выделяешь new - освобождаешь delete.
хз я где то читал вроде что delete вызывает free сама... так что большой разницы наверно нет... но ладно можно и так, просто я переодически путаю си и си++
Цитата Сообщение от ValeryS Посмотреть сообщение
покажи как стоит? может ты уже в отладчик залез
я же показал... так и стоит и никуда не двигается
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
02.08.2014, 22:13
Цитата Сообщение от GetHelp Посмотреть сообщение
я где то читал вроде что delete вызывает free сама
То, что происходит за кулисами это уже совсем другая история.
Цитата Сообщение от GetHelp Посмотреть сообщение
просто я переодически путаю си и си++
А вот это уже похоже на правду В плюсах постарайтесь забыть про malloc/free.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.08.2014, 22:13

Перегрузка оператора +
Добрый день)Почему то не работает перегрузка оператора сложения) #include &lt;iostream&gt; #include &lt;string&gt; #include...

Перегрузка оператора
#include &lt;cstring&gt; #include &lt;iostream&gt; #include &lt;ctime&gt; #include &lt;cstdlib&gt; using namespace std; class station { public: ...

Перегрузка оператора new[]
Привет всем, программирую давольно давно, на с++ второй год. Столкнулся с задачей, в которой нужно создать свой класс и корректно в нем...

Перегрузка оператора >
Добрый день! #include &lt;stdio.h&gt; #include &lt;tchar.h&gt; #include &lt;iostream&gt; template &lt;typename T1, typename T2&gt; bool ...

Перегрузка оператора
Имеется код: #include &lt;iostream&gt; class X { public: int a; int b; int operator+(int a) {


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru