170 похожих чатов

У меня есть константная функция, которая вычисляет некоторые элементы в

контейнере и возвращает константные итераторы на них. Но есть проблема, как потом с ними работать? Сама функция никаких действий не совершает, значит должна быть константой, но извне потом тоже никаких действий над константными итераторами совершить нельзя. Подскажите, пожалуйста, есть какое-то нормальное решение этой проблемы?

13 ответов

18 просмотров

Сделать неконстантную перегрузку

Elnee-あめ Автор вопроса
Danya🔥
Сделать неконстантную перегрузку

То есть если вызываешь её не для просто посмотреть, а для изменений потом, то она будет неконстантные итераторы возвращать, верно?

Elnee あめ
То есть если вызываешь её не для просто посмотреть...

если передаешь неконстантные элементы будет вызываться неконстантная функция

Elnee あめ
То есть если вызываешь её не для просто посмотреть...

Если у тебя объект константный, то вызовется константная перегрузка Иначе неконстантная

Elnee-あめ Автор вопроса
Danya🔥
Если у тебя объект константный, то вызовется конст...

Но тогда придётся код функции полностью продублировать?

Elnee あめ
Но тогда придётся код функции полностью продублиро...

А зачем вообще констатная перегрузка? И метод что, возвращает итератор на член контейнера?

Elnee-あめ Автор вопроса
Liber Azerate
А зачем вообще констатная перегрузка? И метод что,...

Функция выбирает (допусти рандомно) несколько элементов в контейнере и возвращает итераторы на них. Вот отсюда и проблема. Что я хочу сделать её константной, но тогда придётся решать проблемы с тем, что захочется извне что-то поменять с ними, а этого нельзя сделать если с константным итератором.

Elnee あめ
Функция выбирает (допусти рандомно) несколько элем...

Ну, это кажется вообще немного не очень идеей. Ещё инвалидируются итераторы

Elnee-あめ Автор вопроса
Liber Azerate
Ну, это кажется вообще немного не очень идеей. Ещё...

Ну они промежуточно нигде храниться не будут, я понимаю что могут инвалидироваться.

Elnee-あめ Автор вопроса
Liber Azerate
Ну, это кажется вообще немного не очень идеей. Ещё...

А что тогда делать? Вернуть индексы просто?

Elnee あめ
А что тогда делать? Вернуть индексы просто?

Да, так точно не будет проблем с неконстантной перегрузкой, по крайней мере

Похожие вопросы

Обсуждают сегодня

Мужики и девушки, привет) в Вelphi xe7 в настройках во вкладке "Editor Options" далее " Color" есть список: "Elements", открыв который мы можем настраивать отображение разных...
Kraszx
14
Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
Всем привет! Подскажи, пожалуйста, как передать в TComboBox сразу значение и id записи. На Delphi я делал так: ComboBox1.Items.AddObject('Какое-то значение', Pointer(id запис...
Евгений
13
А вот это что за конструкция? Вернее, она тут нафига?
Serjone
10
Мдя, прикол, боевая сборка запускается (именно под отладчиком) после F9 примерно полторы минуты (97 секунд если быть точным). Начал копать - проблема детектится сразу - зависа...
Александр (Rouse_) Багель
38
Мужики. привет) в Вelphi xe7 в настройках во вкладке "Editor Options" далее " Color" есть список: "Elements", открыв который мы можем настраивать отображение разных элементов...
Kraszx
2
Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
50
Товарищи, кто работа с iphelper? Или может я в самой логике ошибки фигачу, не пойму.... var ifTable : PMIB_IFTABLE; size, corSize: DWORD; Buffer ...
Warfarellen
4
я так понимаю, я так подозреваю, что создание такого плагина для человека, кто умеет писать плагины для делфи потребует минут 5-10 времени. но это мое подозрение. хотелось бы ...
Kraszx
7
Всем привет! Кто пользуется DevExpress, подскажите пожалуйста, реализован ли в TcxGrid в новых версиях поиск по датам как в Экселе (ну т.е. не просто список чекбоксов со значе...
A Z
4
Карта сайта