Я любитель С++. Я пишу некоторый код Win32 API, и есть ручки и странно спланированные объекты. Поэтому мне было интересно - есть ли какой-нибудь класс-оболочка, который облегчит управление ресурсами?
Например, когда я хочу загрузить некоторые данные, я открываю файл с CreateFile()
и получаю HANDLE
. Когда я покончу с этим, я должен называть CloseHandle()
на нем. Но для любой достаточно сложной функции загрузки будут десятки возможных точек выхода, не говоря уже об исключениях.
Итак, было бы здорово, если бы я мог обернуть дескриптор в какой-то класс-оболочку, который автоматически вызывет CloseHandle()
после того, как выполнение выйдет из области. Еще лучше - он мог бы подсчитать количество ссылок, чтобы я мог передавать его в других функциях и из них, и он освобождает ресурс только тогда, когда последняя ссылка оставила область видимости.
Концепция проста - но есть ли что-то подобное в стандартной библиотеке? Кстати, я использую Visual Studio 2008, и я не хочу прикладывать стороннюю структуру, такую как Boost или что-то в этом роде.