使用if语句

时间:2016-02-19 13:05:14

标签: c++ loops if-statement do-while

这可能是一个无意义的问题,但我有点卡住,所以我想知道是否有人可以提供帮助。我有以下代码:

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);

各种ifelse if相互排斥,但每个if内部都有do while;如果满足某个条件(不能在单个if语句中指定),则代码返回一个值,else if循环结束。但是,如果在输入单个else if之后,内部条件不符合代码退出而实际上什么都不做,而while循环重新启动整个。

我希望程序记住他输入的位置并避免代码的这一部分,即避免他输入的特定else if没有任何结果,因此他可以尝试输入另一个uri。我想过将布尔值与语句相关联,但我不太清楚如何做到这一点。有没有办法让我不要过多地修改代码结构?

1 个答案:

答案 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}}