- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
考虑这些代码在现实生活中发生。
库代码具有一个名为log_on()的函数,失败时返回false,成功时返回true,但是错误案例过多。
在返回true/false之前,它需要调用指定的回调函数应用程序。所以看起来像:
bool log_on() {
// do something else
bool success = false;
scope_guard guard = [&success]() {
if (success) {
callback(success);
} else {
callback(false);
}
}
success = prepare_logon();
if (success) {
int rc = send_password();
if (rc == PASSWORD_ERR) {
return false;
}
}
if (!send_some_data()) return false;
success = true;
return true;
}
最佳答案
如果必须这样做,可以将实际工作移到一个辅助函数中:
bool log_on_impl() { /* real work here*/ }
bool log_on() {
bool success = log_on_impl();
callback(success);
return success;
}
log_on_impl
可以尽早恢复其心脏的内容。回调仍将使用正确的值调用。
关于c++ - C++ : ScopeGuard vs return check and exception handling?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56711834/
我的代码需要范围守卫,但是我是否必须手动 Dismiss() 从函数正常退出时所有范围守卫?即 void Deleter(MyClass* obj) { delete obj; } MyCla
我在一个函数中分配了多个资源,因此有很多指针,我必须从中返回一个指针(比如 ret_ptr)并在离开函数之前释放其他指针(所有 othr_ptr)。 我在这个函数中有多个导出点(其中 ret_ptr
我遇到了this article多年前由 Andrei Alexandrescu 和 Petru Marginean 编写,其中介绍并讨论了一个名为 ScopeGuard 的实用程序类,用于编写异常安
我正在尝试写一个简单的 ScopeGuard based on Alexandrescu concepts但使用 c++11 习语。 namespace RAII { template
我的印象是它是第三方编写的库中包含的 C++ 类。我试着在谷歌上搜索,我发现了一篇帖子说使用它是个好主意。但是,它未能准确描述它是什么以及我如何将它合并到我的代码中。谢谢。 最佳答案 ScopeGua
这个问题在这里已经有了答案: 关闭 12 年前。 Possible Duplicate: prohibiting instantiation as a temporary object (C++)
ON_BLOCK_EXIT 是 ScopeGuard 提供的实用程序宏implementation .它定义一个本地对象的唯一原因是当它超出范围时执行其用户提供的析构函数。它被定义为: #define
考虑这些代码在现实生活中发生。 库代码具有一个名为log_on()的函数,失败时返回false,成功时返回true,但是错误案例过多。 在返回true/false之前,它需要调用指定的回调函数应用程序
我是一名优秀的程序员,十分优秀!