在C++中,是否存在将结束父函数的嵌套函数的返回
In C++, is there to return out of a nested function that will end the parent function?
我希望发生这样的事情:
void a(){
b()
// if condition met in b(), exit out of this function also
}
void b(){
if(condition){
super return
// also returns out of function a
}
}
我似乎想不出办法来做这件事。如有任何帮助,我们将不胜感激。谢谢
b必须是void吗?你可以通过以下方式正常操作:
void a()
{
// if condition met in b(), exit out of this function also
if( !b() )
{
return;
}
//continue...
}
bool b(){
if(condition)
{
return false;
// also returns out of function a
}
return true;
}
在C++中没有办法完全按照您的要求执行。有4种机制可供您实现类似的目标。
- 返回一个逻辑值:从b返回一个值,在a中测试并立即退出
- 设置全局变量:在b中设置一个全局可访问的标志,在a中进行测试并立即退出
- 异常:在a的调用者中创建一个try/catch块,在b中抛出一个异常,然后在a外部捕获它
- Setjmp/longmp:在a的调用者中创建一个Setjmp,在b中调用longjmp
这些都是你的选择。你可以编写帮助程序、宏或模板,使它们更容易使用,但这是你必须选择的。
编辑:分别处理全局值和返回值。
请注意,这是一个复杂的主题,有许多陷阱可供粗心者使用,包括在非平凡的析构函数中使用longjmp的未定义行为。Cavat程序员!
您可以通过以下任何一种方式
- 从第二个方法返回布尔类型。在第一个方法中,检查返回类型,然后执行操作
类似的东西
void a(){
if(b())
return;
}
bool b(){
if(condition){
// do something
return true;
}
}
- 从第二个方法抛出异常。您可以从调用者方法捕获它
相关文章:
- 给定一个C++嵌套的私有结构类型,是否有从文件范围静态函数访问它的策略
- 如何在 C++ 的外部类构造函数中初始化嵌套类成员
- 如何使用 binary_search STL 函数在嵌套类中搜索整数?
- 嵌套模板函数采用 2 个具有相同内部类型的容器
- C++将结构传递给函数以访问嵌套结构
- C++ 在外部使用嵌套结构实现类函数
- 嵌套模板函数的重载
- 通过两个嵌套函数传递C++函数的名称
- 如何从另一个嵌套类中调用某个封闭类的嵌套类的函数指针成员的值?
- MSVC 2017 - 错误 - 如何将模板类 X 的模板成员函数声明为嵌套类 X::Y 的好友
- 使用嵌套函数数组是个好主意吗?
- 嵌套的模板结构构造函数实现
- C2436 '{ctor}':构造函数初始值设定项列表中的成员函数或嵌套类
- 我们可以在main函数中声明嵌套类对象吗
- C++嵌套的迭代器类(在链表类中)Insert_After函数
- 访问另一个类中的模板化嵌套类函数和对象
- Cllass 函数不解析嵌套类实例或函数
- C++析构函数嵌套类的显式模板
- C++和析构函数(嵌套类和一般问题)
- C++函数嵌套模板