【发布时间】:2011-04-20 19:44:28
【问题描述】:
为仅按值传递的句柄编写包装类相对容易。我正在尝试确定封装需要按地址传递的句柄的最佳方法。
例如,为 SC_HANDLE 之类的东西编写一个通过值传递给 QueryServiceConfig() 的包装器并不难。可以实现一个成员函数,如 .GetHandle() 或实现 operator()。
问题(至少对我而言)是像 RegOpenKeyEx() 这样的 API 函数需要 HKEY 的地址。
我读过重载运算符 & 通常是个坏主意。在允许 API 函数访问的同时保持封装(或尽可能多的封装),尤其是资源收集的推荐方法是什么?
【问题讨论】:
-
对于此类情况,我认为我更喜欢 Attach() 和 Detach() 模型。您可以实现一个 & 运算符,但我发现它非常丑陋。没有真正正确的答案。这更多是个人喜好。