所以,在这个问题Proper way close WinAPI HANDLEs (avoiding of repeated closing)的答案中,回答者创建了一个HandleWrapper模板,您可以这样使用:
HandleWrapper<KernelHandleTraits> hFile(CreateFile(...))
并且当hFile超出范围时将被销毁。
在您的代码中,可能还有与此类似的行:
ReadFile(hFile(), ...)
我想知道Handle的模板或类是什么样的,如果我想这样使用它:
ReadFile(hFile, ...)
请注意缺少的括号。是否有任何C ++技巧可以实现这一目标?
答案 0 :(得分:1)
是的,有:你必须实现一个conversion operator,即operator HANDLE()
,它将返回存储的句柄。 *
我没有推荐。 C ++中已经有足够的隐形代码了。没有必要加上它,当没有那么多的时候就不那么多了。
<小时/> * 顺便提一下,您链接到的代码已经实现了相应的转换运算符
operator traits::HandleType()
。换句话说:您不需要特别实施任何内容来使用您喜欢的语法。