在成员函数的范围内,我想临时将一个成员变量设置为特定值。
然后,当此函数返回时,我希望将该成员变量重置为已知值。
为了防止异常和多次返回,并且我用一个简单的类似RAII的类来完成。它在成员函数的范围内定义。
void MyClass::MyMemberFunction() {
struct SetBackToFalse {
SetBackToFalse(bool* p): m_p(p) {}
~SetBackToFalse() {*m_p=false;}
private:
bool* m_p;
};
m_theVariableToChange = true;
SetBackToFalse resetFalse( &m_theVariableToChange ); // Will reset the variable to false.
// Function body that may throw.
}
这似乎是一种非常普通的情况,我在想C++标准库是否有任何类模板可以实现此功能?