gpt4 book ai didi

c++ - Windows HANDLE RAII管理,返回bool而不是句柄怎么办?

转载 作者:太空宇宙 更新时间:2023-11-04 14:29:55 25 4
gpt4 key购买 nike

之前:

Proper way close WinAPI HANDLEs (avoiding of repeated closing)

我的问题是:如果 CreateFile 返回一个 bool 而不是 HANDLE,并且输出有一个指针怎么办?发明的例子:

HANDLE handle;

if (CreateFile(&handle, "filename", ...) == true) {
//...
}

是否有一个很好的语法可以在 C++ 中将其与提供的 RAII 类一起使用?这样我就可以将我的对象而不是指针作为第一个参数。

最佳答案

在这种情况下,我会简单地向 RAII 类添加一个覆盖的 operator&,例如:

template< class traits >
class HandleWrapper {
...
public:
...
traits::HandleType* operator&() { return &FHandle; }
};

然后像这样使用它:

HandleWrapper<KernelHandleTraits> handle;

if (CreateFile(&handle, "filename", ...) == true) {
...
}

关于c++ - Windows HANDLE RAII管理,返回bool而不是句柄怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42650383/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com