|
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
|
|
Перегрузка оператора +02.08.2014, 17:56. Показов 7991. Ответов 83
Метки нет (Все метки)
не получается в своем классе перегрузить оператор +
пишет "error C2804: бинарный "operator +" имеет слишком много параметров", действительно задал 2 параметра, но как еще то? ведь + и подразумевает собой сложение 2х значений...
0
|
|
| 02.08.2014, 17:56 | |
|
Ответы с готовыми решениями:
83
Перегрузка оператора ^ Перегрузка оператора +
|
|
|
|||||||
| 02.08.2014, 22:14 | |||||||
0
|
|||||||
|
Модератор
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,876
|
|||||||||||||
| 02.08.2014, 22:15 | |||||||||||||
|
могу предложить другой путь "отладочная печать" после каждого выделения памяти печатаешь на экран значение указателя например
так что нужно проверять
0
|
|||||||||||||
|
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
|
||
| 02.08.2014, 22:19 [ТС] | ||
я лучше забуду в этом классе об new/delete просто очень уж удобная штука realloc, потому что она меняет размер, да еще и копирует элементы при этом
0
|
||
|
:)
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
|
||||
| 02.08.2014, 22:21 | ||||
|
Копировать одну строку в другую через sprintf - достойно говнокода.
0
|
||||
|
|
||
| 02.08.2014, 22:21 | ||
|
0
|
||
|
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
|
|||||||||||
| 02.08.2014, 22:22 [ТС] | |||||||||||
|
так... сейчас у меня код такой выходит
0
|
|||||||||||
|
Модератор
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,876
|
||
| 02.08.2014, 22:26 | ||
![]() сам посмотри что будет, по шагам пройди нужно предусматривать вариант, когда один аргумент является одновременно и приемником результат
0
|
||
|
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
|
|
| 02.08.2014, 22:26 [ТС] | |
|
0
|
|
|
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
|
|||||||
| 02.08.2014, 22:39 [ТС] | |||||||
вообще я кажется понял что мне нужно, но не знаю как реализовать... мне надо все также перегрузить оператор сложения, НО не менять при этом this и при этом ухитриться вернуть из функции экземпляр String (это самое сложное, поскольку он по прежнему не валиден ) таким образом будет именно сложение, как я понял именно поэтому у меня не хочет нормально складывать...
0
|
|||||||
|
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
|
| 02.08.2014, 22:40 | |
|
0
|
|
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|
| 02.08.2014, 22:41 | |
|
GetHelp, миллион советов уже тебе дали по конкретике, не буду повторяться.
Скажу одно, основная и главная проблема твоя в подходе к написанию кода. То, что ошибки ты сейчас самостоятельно или с помощью форумчан, исправишь - это понятно и хорошо. Но вот самый главный шаг нужно с делать в сторону того, чтобы ошибок было изначально меньше. Начни с разделения ответственности. У тебя есть задача, задача делится на составные части. Каждую составную часть нужно описать отдельно и отдельно оттестировать, а потом собирать все воедино как конструктор. Т.е., вот скажем функция выделения памяти, она у тебя, что называется, прошита во все методы, где используется. каждый раз нужно высчитывать размер умножая на sizeof(char), каждый раз заботиться о проверке, каждый раз смотреть, чтобы указатель не попортился и т.д. Где-то можно что-то и забыть или не так посчитать. В нормальных контейнерах функцию выделения памяти обычно абстрагируют во внутреннюю функцию allocate, а освобождение, соответственно, в deallocate. Инициализация - это тоже отдельная операция. Копирование - тоже. И т.д. Принцип divide et impera очень древний и очень действенный. Не стоит пренебрегать им.
0
|
|
|
|
||
| 02.08.2014, 22:45 | ||
|
String str = String("text") + "data"; Вызовется - КП (коснтруктор преобразования) String("text") Сработает перегруженный оператор + Strig + char Сработает КК для str Если бы стоял оператор присваивания String operator = String мы бы дёрнули делитом битый поинтер text Касательно кажущегося ликиджа str = str + "text" его не будет т.к отработает дефолтный String operator = String который по сути присвоит классу самого себя
0
|
||
|
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
|
||||||||
| 02.08.2014, 22:53 [ТС] | ||||||||
Добавлено через 2 минуты вы понимаете что КП не возвращает значения? конструкторы вообще не могут возвращать значение ! что именно вы пытаетесь складывать? в конечно счете вы просто присваиваете str = "data"Добавлено через 3 минуты т.е. КП вызванный из неоткуда ничего и не дает, вы же не вызываете его от переменной...
0
|
||||||||
|
|
|
| 02.08.2014, 23:00 | |
|
GetHelp, да ну ё моё, я же всё разложил по полкам
String str = String("text") + data String("text") - {new String} {new String} + data = char *operator + (char *) String str = String(const String new Object) что тут не ясного?
0
|
|
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|||||||||||||||||
| 02.08.2014, 23:07 | |||||||||||||||||
|
Функция выделения памяти вынесена в отдельный внутренний метод:
1
|
|||||||||||||||||
|
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
|
|||||||||||
| 02.08.2014, 23:27 [ТС] | |||||||||||
|
-=ЮрА=-, хз наверное я лучше завтра еще раз свежим взглядом на это посмотрю, но щас хоть убей не понимаю...
DrOffset, я лучше напишу общие аллокаторы... C стиль
з.ы. сразу о возражениях касательно С стиля, да шаблоны это из плюсов, но мой компилятор это глотает... в конце концов важно лишь то в каком стиле происходит аллокация, а не то во что это обернуто...
0
|
|||||||||||
|
57 / 51 / 42
Регистрация: 18.07.2014
Сообщений: 194
|
|
| 02.08.2014, 23:29 | |
|
0
|
|
|
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
|
| 02.08.2014, 23:30 | |
|
1
|
|
| 02.08.2014, 23:30 | |
|
Перегрузка оператора + Перегрузка оператора
Перегрузка оператора > Перегрузка оператора Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
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: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|