Шаблон для идиомы RAII
От: Basil2 Россия https://starostin.msk.ru
Дата: 28.12.09 15:58
Оценка:
Чисто чтобы не забывать закрывать виндовые хендлы, набросал примитивный шаблон:


template<typename T>
class CallOnScopeLeave
{
   typedef int (__stdcall *func_type)(T); // int & stdcall need for calling Win API
   func_type Func;
   T Param;

public:
   CallOnScopeLeave(func_type func, T par) : Func(func), Param(par) {};
   ~CallOnScopeLeave()
   {
      Func(Param);
   };
};



Используется, понятное дело, так:

HANDLE hFile = CreaterFile(...);
if (hFile == INVALID_HANDLE_VALUE) 
   return;
CallOnScopeLeave<HANDLE>(&CloseHandle, hFile);
// работа с хэндлом...


А вопрос такой. Наверняка эт не я один умный , и такие шаблоны уже существует. Линканите плз какой-нибудь более-менее известный и стандартный. (Без заточки под винду, как у меня, да и вообще хочется посмотреть на "тру" RAII-шаблон )
Проект Ребенок8020 — пошаговый гайд как сделать, вырастить и воспитать ребенка.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.