在离开作用域时自动调用函数的最优雅解决方案是什么? 我的当前方法(见下文)可以工作,但我猜应该有更通用的方法,例如编写一个自定义类来实现。
#include <iostream>
#include <functional>
using namespace std;
class DoInDtor
{
public:
typedef function<void()> F;
DoInDtor(F f) : f_(f) {};
~DoInDtor() { f_(); }
private:
F f_;
};
void foo()
{
DoInDtor byeSayerCustom([](){ cout << "bye\n"; });
auto cond = true; // could of course also be false
if ( cond )
return;
return;
}
int main()
{
foo();
}
当然,一个人可以滥用std::unique_ptr及其自定义删除器,但由于我并没有真正获取资源,因此从代码可读性的角度来看,这对我来说也不是很好。 有什么建议吗?
DoInDtor
对象听起来很费力。你想要实现什么目标? - Kiril Kirov