改进Windows手柄上的RAI模板类?

时间:2017-02-25 20:05:00

标签: c++

所以,在这个问题Proper way close WinAPI HANDLEs (avoiding of repeated closing)的答案中,回答者创建了一个HandleWrapper模板,您可以这样使用:

HandleWrapper<KernelHandleTraits> hFile(CreateFile(...))

并且当hFile超出范围时将被销毁。

在您的代码中,可能还有与此类似的行:

ReadFile(hFile(), ...)

我想知道Handle的模板或类是什么样的,如果我想这样使用它:

ReadFile(hFile, ...)

请注意缺少的括号。是否有任何C ++技巧可以实现这一目标?

1 个答案:

答案 0 :(得分:1)

是的,有:你必须实现一个conversion operator,即operator HANDLE(),它将返回存储的句柄。 *

我没有推荐。 C ++中已经有足够的隐形代码了。没有必要加上它,当没有那么多的时候就不那么多了。

<小时/> * 顺便提一下,您链接到的代码已经实现了相应的转换运算符operator traits::HandleType()。换句话说:您不需要特别实施任何内容来使用您喜欢的语法。