|
"C with Classes"
|
||||||
Чем заменить указатель05.07.2020, 10:39. Показов 5181. Ответов 48
Метки нет (Все метки)
Чем заменить можно указатель в данном примере. Что бы можно было использовать
p как объект без операции разыменования?
подозреваю, что использовать указатель в данном случае оптимальное и единственное решение, можно было бы использовать ссылку Container & если бы не было функции члена Reset
0
|
||||||
| 05.07.2020, 10:39 | |
|
Ответы с готовыми решениями:
48
Указатель или ссылка на указатель. В чем разница? Чем отличаются указатель на строку и константный указатель на строку? Указатель на указатель, в чем смысл? |
|
"C with Classes"
|
|
| 05.07.2020, 16:34 [ТС] | |
|
0
|
|
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|
| 05.07.2020, 16:40 | |
|
_stanislav, Тут в общем вопрос касательно взаимосвязей в ООП по большому счету. Их два вида - композиция - обьект является составной частью и уничтожается вместе с хозяином, и агрегация -объект является составной частью другого объекта, ваш же объект только пользуется им в случае если такой есть - т.е. помереть может собственной смертью вне зависимости от ваших на него ссылок . Вы тут используете агрегацию. Т.е. по определению должны быть готовы к тому что кто то сторонний может уничтожить объект на который вы ссылаетесь. Разрулить ситуацию можно двумя вариантами - либо действительно weak_ptr (цена - лок при каждом обращении) либо интрузивные двунаправленные указатели (цена - более сложная реализация, в универсальном варианте - оверхед по памяти указателей от 2x, но оповещение о смерти объекта однократное).
Ну либо пересмотреть архитектуру в направление композиции очереди в ваш объект/обращения к очереди через ее хозяина.
0
|
|
|
|
||||||
| 05.07.2020, 16:41 | ||||||
|
Можно к примеру так использовать
Или когда у нас Containe расшаривается между несколькими SomeСlassX и тогда соответственно shared_ptr.
0
|
||||||
|
"C with Classes"
|
||
| 05.07.2020, 17:07 [ТС] | ||
|
Добавлено через 3 минуты Класс который передает в SomeСlass буфер, заинтересован в том что бы SomeСlass обработал этот буфер, зачем ему затирать буфер? Вообщем то класс который передает в SomeСlass буфер только и делает что заполняет этот буфер и передает на обработку в SomeСlassДобавлено через 22 минуты точнее некий класс буферезирует данные которые SomeСlass уже использует через указатель.
0
|
||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||||||||||||
| 05.07.2020, 17:10 | |||||||||||||
|
уважающая себя, хорошо воспитанная программа не должна делать бессмысленных вещей. если очередь пуста, тогда в принципе ничего удалять из неё не нужно. Кликните здесь для просмотра всего текста
фрагмент из реального продакшен кода.
как у тебя вообще, хотя бы чисто теоретически может возникнуть ситуация, когда ты вынужден опираться на этот буль? вот объясни мне: как это вообще возможно? ты что, пишешь код по принципу: "сначала делаем, и только потом думаем?"
твой класс должен обработать данные, которые внезапно протухли. выполнение задачи невозможно. а от выполнения этой задачи зависит жизнь людей на борту космического корабля. у тебя ошибка в коде из-за которой алгоритм в принципе не функционирует. вот бросил ты эксепшен и что? что дальше? у тебя есть 1 час времени, пока космонафты не задохнулись, и не поджарились. вообще, поражает логика некоторых людей. они думают, что эксепшен - это такая палочка-выручалочка. по волшебству исправит баг, и заставит код успешно отработать. не будет он работать.
0
|
|||||||||||||
|
6354 / 3525 / 1428
Регистрация: 07.02.2019
Сообщений: 9,008
|
||
| 05.07.2020, 17:39 | ||
|
0
|
||
|
"C with Classes"
|
|
| 05.07.2020, 17:44 [ТС] | |
|
0
|
|
|
6354 / 3525 / 1428
Регистрация: 07.02.2019
Сообщений: 9,008
|
|||
| 05.07.2020, 17:47 | |||
|
0
|
|||
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
||||||||||||||
| 05.07.2020, 17:47 | ||||||||||||||
и прежде чем ты назовешь этот код плохим названием скажу что я в этой теме не защищаю какой либо подход а лишь рассматриваю в принципе возможные варианты, их плюсы и минусы но если скажем твой ресурс это некий endpoint, который не спрашивая тебя может закрыть соединение с тобой, то это уже не баг. и вот мы как бы можем проверить а открыто ли еще соединение. если да - то работаем. если нет - то не работаем. и это нормально в рамках нашей задачи.
0
|
||||||||||||||
|
"C with Classes"
|
|||
| 05.07.2020, 17:55 [ТС] | |||
|
Добавлено через 3 минуты zayats80888, для большей универсальности класса SomeClass лучше наверное принимать буфер по значению с перемещением.Добавлено через 3 минуты
0
|
|||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||
| 05.07.2020, 18:24 | ||||
|
такое впечатление, что автору кода совершенно пофигу: будет ли в итоге удален элемент, или нет. всвязи с чем совершенно не понятно: зачем вообще он пытается удалить элемент из очереди? дело в здравом смысле. дело в ответе на вопрос: зачем удаляем? здесь по смыслу - все тоже самое, что и в первом варианте. на моей практике, все случаи работы с очередями сводились к тому, что нужно проверить: если очередь не пустая, тогда извлекаем объект и обратабываем. иначе - пропускаем до следующего раза. ещё раз: сначала выясняем: а нужно ли вообще обрабатывать? и только потом удаляем кандидат-отработанный элемент. удалять просто ради удаления - это какой то бред. попадают под вариант с багом. все без исключения. во всех в этих ситуациях ссылка должна оставаться валидной. иначе алгоритм в принципе не сможет работать.
0
|
||||
|
"C with Classes"
|
||||||
| 05.07.2020, 18:34 [ТС] | ||||||
|
вот объявление класса
SomeClass если кому интересно:
0
|
||||||
|
261 / 111 / 53
Регистрация: 22.01.2017
Сообщений: 448
|
||
| 05.07.2020, 18:34 | ||
|
Не по теме: Сам не люблю контейнер через указатель дергать.
0
|
||
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
|||||||||||||||
| 05.07.2020, 18:55 | |||||||||||||||
|
она как раз таки возвращает количество удаленных элементов (если 0 - значит ничего не удалили). вот есть такой вариант удаления элемента по ключу (если он есть)
то есть в одном случае мы опираясь на возвращаемое значение метода который отвечает за удаление выдаем репорт а в другом случае мы сначала проверяем есть ли элемент а потом удаляем его и выдаем репорт суть одна и та же просто первый вариант более краток причем в случае std::map::erase(key) у нас 2 варианта: возвращаемое значение либо 0 либо 1 (т.к ключи уникальные) что в принципе как раз таки намекает на bool Добавлено через 3 минуты
1
|
|||||||||||||||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|
| 05.07.2020, 19:04 | |
|
_stanislav, Ну здесь по всей видимости стоит пересмотреть а насколько нужно выдергивать токены по одному. Возможно стоит посмотреть в сторону того, что лексер преобразовывает сразу всю входную строку в строку токенов, потом работает уже с ней. Такая строка токенов и гораздо меньше (ну к примеру для glext.h что то около 75k токенов на мегабайт текста) - т.е. работа с ней будет гораздо быстрее, ну и в результате и с указателем чужим геморроя нет и к кешу более дружелюбно будет однозначно.
0
|
|
|
"C with Classes"
|
|
| 05.07.2020, 19:09 [ТС] | |
|
0
|
|
|
261 / 111 / 53
Регистрация: 22.01.2017
Сообщений: 448
|
||||||
| 05.07.2020, 19:31 | ||||||
|
Undisputed, на сколько правильна следующая реализация (оставим пока эффективность, ну и move assignment):
0
|
||||||
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
|
| 05.07.2020, 19:35 | |
|
n1b1ru,
Я ещё забыл отметить, что в случае с move будет испорчен исходный объект что может быть неприемлемо в конкретной ситуации. А на сколько правильный код о котором вы спросили уже зависит от конкретной задачи. Это зависит от того что вы пытаетесь получить в конечном счёте.
0
|
|
|
261 / 111 / 53
Регистрация: 22.01.2017
Сообщений: 448
|
||
| 05.07.2020, 19:44 | ||
|
Undisputed, задача реализовать композицию.
0
|
||
|
"C with Classes"
|
|
| 05.07.2020, 19:47 [ТС] | |
|
0
|
|
| 05.07.2020, 19:47 | |
|
сма DAEWOO DWD M1029A чем заменить транс, трансформатор в обрыве, чем заменить
Итератор и указатель в чем разница Чем можно заменить заменить toggle() ? Как заменить переменную i на указатель? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . .
Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
|
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг.
Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует.
В процессе разработки. . .
|
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
|
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации:
1. Вернуть возможность использования знаков | 1 l I;. . .
|
|
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С.
Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
|
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию?
Фраза «Любая достаточно развитая технология неотличима от магии». . .
|
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль?
Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
|
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология.
«Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
|