【发布时间】:2012-02-26 08:07:42
【问题描述】:
我正在寻找一种优雅的解决方案,用于在 C++ 中实现等效于 C# using 语句。理想情况下,生成的语法应该易于使用和阅读。
C# Using 语句详细信息在这里 - http://msdn.microsoft.com/en-us/library/yh598w02(v=vs.80).aspx
我不确定解决方案是在类上使用带有析构函数的函数指针、某种形式的巧妙模板编程,甚至是元模板编程。基本上我不知道从哪里开始......
【问题讨论】:
-
我被告知 RAII 涵盖了这个。
-
正如 Anthony 所说,使用 RAII 会自动为您执行此操作,而且恕我直言,它使代码比 using 模式更简洁。
-
从我的角度来看,
using关键字只是一开始就没有 RAII 的平庸补救措施。所以,你不要试图效仿它。 -
@Andre 有点难。我想 C# 编译器可以处理类似于 RAII 的作用域 IDisposable,但我不确定它如何知道处置对象是安全的。也许在对象离开范围时检查 ref 计数并在 0 时立即调用 dispose?
-
@DavidHeffernan 我说的是不必使用 using 范围。
标签: c# c++ templates using-statement