不要包装类型,因为会降低可迁移性。应该包装赋值和释放操作,保留原始C语言类型。
类似地,Win32文件打开操作可以这样包装。
<code class="language-cpp">struct Win32FileMgr { HANDLE &f; Win32FileMgr(HANDLE &f, LPCTSTR fn, DWORD da, DWORD sm, LPSECURITY_ATTRIBUTES sa, DWORD cd, DWORD fa, HANDLE ht) : f(f) { f = CreateFile(fn, da, sm, sa, cd, fa, ht); } ~Win32FileMgr() { if (f != NULL && f != INVALID_HANDLE_VALUE) CloseHandle(f); f = INVALID_HANDLE_VALUE; } }; </code>
其实这个用法不仅可以用于资源的情况,实际上可以用于所有【必须成对进行的操作】的包装。不光可以用于因为异常跳出的情况,实际上可以用于在任何【多出口的函数】中实现对成对操作的包装。
时段 | 个数 |
---|---|
{{f.startingTime}}点 - {{f.endTime}}点 | {{f.fileCount}} |