|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
22.03.2018, 11:44 | #1 |
Форумчанин
Регистрация: 07.06.2015
Сообщений: 164
|
C++ 11 shared_ptr
Есть вопрос из теста
You have some code that creates a HardwareContext object representing a hardware resource. You need to do some specialized cleanup tasks associated with this object when the destructor of the shared_prt referencing if executes when the reference count reaches zero. Based on the scenario above, which action do you take to ensure your function cleanup() is executed as specified? 1) use shared_ptr_deleter instead of shared_ptr 2) pass cleanup as the second argument to shared_ptr 3) call addDeleter(cleanup) on the shared_ptr reference 4) override the destruction of the shared_ptr you create to point to cleanup 5) set the deleter property of the shared_ptr Правильно ли я понимаю, правильный ответ 2, исходя из http://en.cppreference.com/w/cpp/mem...ptr/shared_ptr сделать что-то подобное, именно это нужно для решения задачи? std::shared_ptr<HardwareContext > sh4(new HardwareContext, cleanup()) Последний раз редактировалось polin11; 22.03.2018 в 11:47. |
22.03.2018, 11:55 | #2 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
если cleanup это функция, то cleanup() это просто обычный вызов функции в этом месте.
Но да, делитер передается вторым аргументом.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
22.03.2018, 12:13 | #3 |
Форумчанин
Регистрация: 07.06.2015
Сообщений: 164
|
я так понял, что в задаче идет речь о дополнительной функции cleanup() которая должна после удаления shared_prt.count вызваться и провести какие-либо действия
|
22.03.2018, 12:15 | #4 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Ну дык после удаления ж, а не во время создания.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
22.03.2018, 12:17 | #5 |
Форумчанин
Регистрация: 07.06.2015
Сообщений: 164
|
Вы хотите сказать, что нужно
std::shared_ptr<HardwareContext > sh4(new HardwareContext, указатель на cleanup) Последний раз редактировалось polin11; 22.03.2018 в 12:19. |
22.03.2018, 12:27 | #6 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Да.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Вопрос по std::shared_ptr и std::thread | Shadowfirst | Visual C++ | 2 | 13.09.2017 07:55 |
shared_ptr и vector | cheef | Общие вопросы C/C++ | 1 | 26.07.2014 18:30 |
Проблема с инициализацией shared_ptr | mikepc | Visual C++ | 2 | 25.08.2010 09:36 |