![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| null56 |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 721 Регистрация: 19.3.2008 Репутация: 2 Всего: 12 |
Всем привет
Поясню что хочу сделать: хочу создать такой класс - шаблон, который бы принимал два параметра: - тип хранимого значения - функция callback, которую бы он вызывал у себя в деструкторе, другими словами автоматический закрыватель каких - либо хендлов Пытаюсь определить полную специализацию конструктора класса для типа int, но видимо не правильно определяю ее Класс
Вывод компилятора в отношении строки - проблемы
Вопрос: если моя цель ясна, то подскажите пожалуйста, можно ли специализировать конструктор класса (методы отдельно точно можно)? если это возможно, то подскажите где я накосячил с синтаксисом? Заранее благодарен всем откликнувшимся |
||||
|
|||||
| 586 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: 10 Всего: 146 |
Это сообщение отредактировал(а) 586 - 1.2.2010, 16:31 |
|||
|
||||
| tolgamrab |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 1.2.2010 Где: г. Смоленск Репутация: нет Всего: нет |
Рассматриваемая задача не нова. Это классически пример паттерна контейнер(ресурс)
Вариант первый - решение задачи в лоб:
Использование:
Но лучше все же не баловаться callback процедурами и писать контейнер исходя из того, что он сам заботится об удалении ресурса, при необходимости специализировать шаблон для своего типа ресурса хитрым деструктором. А еще лучше - воспользоваться написанным. auto_ptr подходит как нельзя лучше для решения этой задачи. Нужно или написать обертку для хэндла - в конструкторе создаем, в деструкторе удаляем и все это дело на вход auto_ptr, или посмотреть на реализации умных указателей из любой приличной библиотеки. Там можно явно задавать и тип хранимого значения и стратегию удаления. |
||||
|
|||||
| null56 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 721 Регистрация: 19.3.2008 Репутация: 2 Всего: 12 |
586, спасибо, теперь понятнее...
только не могу понять одну фразу из книги про шаблоны
что имел в виду автор в контексте второго предложения про отдельную функцию - член? Добавлено через 2 минуты и 30 секунд tolgamrab, да, про библиотеку согласен, просто разбираюсь с шаблонами... тебе тоже спасибо за пример |
|||
|
||||
| 586 |
|
||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: 10 Всего: 146 |
Да. Действительно.
Это сообщение отредактировал(а) 586 - 1.2.2010, 19:11 |
||||||
|
|||||||
| null56 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 721 Регистрация: 19.3.2008 Репутация: 2 Всего: 12 |
спасибо, так намного понятнее
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |