这可能是一个无意义的问题,但我有点卡住,所以我想知道是否有人可以提供帮助。我有以下代码:
bool while_condition=false;
do{
if(/*condition*/){
//code
}
else if(/*condition*/){
//code
}
else if(/*condition*/){
//code
}
...//some more else if
else{
//code
}
check_for_do_while_loop(while_condition, /*other parameters*/);
}while(while_condition);
各种if
和else if
相互排斥,但每个if
内部都有do while
;如果满足某个条件(不能在单个if语句中指定),则代码返回一个值,else if
循环结束。但是,如果在输入单个else if
之后,内部条件不符合代码退出而实际上什么都不做,而while循环重新启动整个。
我希望程序记住他输入的位置并避免代码的这一部分,即避免他输入的特定else if
没有任何结果,因此他可以尝试输入另一个uri
。我想过将布尔值与语句相关联,但我不太清楚如何做到这一点。有没有办法让我不要过多地修改代码结构?
答案 0 :(得分:1)
为了了解一种避免加载变量的方法,这里概述了如何数据驱动解决方案。
std::list<TestItem> test_item_list;
test_item_list.push_back(TestItem(ConditionFn1));
test_item_list.push_back(TestItem(ConditionFn2));
这不应该是你问题的完整解决方案,而是建议另一种方法来解决它。
这里没有记录的重要步骤是构建要传递给RunTest的std :: TestItems列表。这样做的代码可能如下所示
bool ConditionFn1(const state_type& state_to_test, std::shared_ptr<result_type>& result_ptr)
{
// Do some work
if (....)
return false;
else {
result_ptr.reset(new result_type(some_args));
return true;
}
}
ConditionFn1的定义可能类似于
{{1}}