|
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
|
||||||
Проверить объект в std::bind на живучесть19.05.2015, 16:56. Показов 1142. Ответов 8
Метки нет (Все метки)
0
|
||||||
| 19.05.2015, 16:56 | |
|
Ответы с готовыми решениями:
8
Как можно еще использовать std::placeholders вне в связки с std::bind? В чем отличия между std::cref() и std::bind()? |
|
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
|
|
| 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
|
|||
|
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
|
|||
| 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
|
|
|
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
|
||
| 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
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Рецензия / Мнение/ Перевод
https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs
. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|