|
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
|
||||||
Проверить объект в std::bind на живучесть19.05.2015, 16:56. Показов 1187. Ответов 8
Метки нет (Все метки)
0
|
||||||
| 19.05.2015, 16:56 | |
|
Ответы с готовыми решениями:
8
Как можно еще использовать std::placeholders вне в связки с std::bind? В чем отличия между std::cref() и std::bind()? |
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,818
|
|
| 19.05.2015, 17:09 | |
|
rikimaru2013, в такой постановке вопроса - никак.
Такие вещи должны решаться by design. Т.е. либо 1) Архитектура должна быть устроена так, что такие вызовы (с убитым объектом) невозможны в принципе. либо 2) Проверка выполняется до вызова во внешнем коде (в данном случае в main).
0
|
|
|
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
|
|||
| 19.05.2015, 20:50 [ТС] | |||
|
Добавлено через 2 минуты Пример использования давайте возьмём простой: Герой бьёт врага, как снаряд долетает до врага и наносит ему урон возвращается callback о том сколько нанесли урона (для вампиризма к примеру) и о наличии дебаффа у врага(кто его бьёт получает возвратку в 10 урона).
0
|
|||
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,818
|
|||
| 19.05.2015, 22:55 | |||
|
Я одного не пойму, зачем здесь в callback`е метод, принадлежащий врагу, в таком случае? Пусть враг генерит event с данными о своем уроне (или смерти), но вот указатель на себя в callback пихать? Зачем?
0
|
|||
|
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
|
|
| 19.05.2015, 23:20 [ТС] | |
|
в этом и смысл колбека - герой делает 12 выстрелов в секунду к примеру, как только снаряд долетает вызывается метод каллбек внутри врага, который регенит ему жизни или если уворот, то нет.
0
|
|
|
202 / 200 / 65
Регистрация: 06.10.2013
Сообщений: 552
|
|
| 19.05.2015, 23:42 | |
|
А event то чем хуже?
0
|
|
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,818
|
||
| 19.05.2015, 23:44 | ||
|
Вообще, эту схему можно реализовать с помощью введения "арбитра". Герой не дергает методы врага, герой сообщает арбитру, что хочет ударить такого-то врага. Арбитр проверяет жив ли враг или нет, если да, то сообщает врагу, что его ударили. Если враг умирает, то он сообщает арбитру, что умер. После этого герою, например, приходит уведомление о полученном опыте. Чем это лучше? У нас есть сущность, которая безоговорочно знает о том, кто жив, а кто нет. Она всегда сможет проконтролировать возможность вызова нужных методов у объектов. Внутри нее можно организовать очередь и все запросы герой<->враг будут идти через нее. Заодно решим проблему безопасного многопоточного взаимодействия, если оно есть.
2
|
||
|
265 / 165 / 56
Регистрация: 25.02.2015
Сообщений: 435
|
||||||
| 20.05.2015, 00:24 | ||||||
|
решать кому какой вред нанесен лучше все-таки предложенным арбитром. что-то вроде двойной диспетчиризации (у меерса похожая задача описана).
по поводу проверки на живучесть у меня следующая схема прижилась: метод класса, через который в объект добавляются всякие колбеки возвращает некий объект-подписку. в деструкторе такой подписки коллбек отписывается. т.е. подписка содержит в себе указатель на объект, который ее создал. тот, кто регистрировал коллбек обязан как-то эту подписку держать. как только она удаляется - удаляется и коллбек и он не будет позван у мертвого объекта. чтобы подписка не попыталась отписаться от уже мертвого вызывальщика коллбеков, объект, который дергает коллбеки имеет внутри себя список всех живых подписок и в своем деструкторе дергает у них спец метод, который предотвращает отписку в деструкторе. Добавлено через 18 минут вот накидал по быстрому иллюстрацию:
1
|
||||||
| 20.05.2015, 00:24 | |
|
Помогаю со студенческими работами здесь
9
Не освобождается память std::string после использования std::bind std::bind
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2.
Задача: вывести данные из ТЧ нетипового документа. . .
|
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению.
На форме документа создается. . .
|
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
|
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
|
|
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
|
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию.
2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
|
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
|
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO
Апнулись до NET10.
Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта
так и в интерактивном режиме. из сложностей - чисто функциональный подход.
Решил. . .
|