有人能帮助调试这个C++代码吗?我真的不明白错误消息指的是什么

有人能帮助调试这个C++代码吗?我真的不明白错误消息指的是什么,c++,C++,错误消息i keept getting:警告:控件到达非void函数的末尾[-Wreturn type] 285 |}这是一个警告而不是错误。 警告表示,如果for循环不运行,您将无法从函数返回 试试这个: bool if_重复常量向量&assgt,常量字符串&ID{ int i; 对于i=0;i

错误消息i keept getting:警告:控件到达非void函数的末尾[-Wreturn type]
285 |}

这是一个警告而不是错误。 警告表示,如果for循环不运行,您将无法从函数返回

试试这个:

bool if_重复常量向量&assgt,常量字符串&ID{ int i; 对于i=0;i bool if_重复常量向量&assgt,常量字符串&ID{ int i; 对于i=0;i你的代码是错误的。您可以用这一行编写完整的函数。测试时,您将得到相同的结果:

bool if_duplicate (const vector <Assignment> & assgt, const string & ID) {
   int i;
   
   for (i=0; i<assgt.size();i++) {
      if (assgt[i].getId() == ID) {
         return true;
      } 
      else {
   return false;
      }
   }
}

例如,如果assgt.size为0,您将到达函数末尾而不返回任何内容。在调试器中单步执行该函数,您将立即看到问题。我不确定代码在任何情况下都能达到预期效果;如果只想检查第一个元素(如果存在的话),为什么要有一个循环呢?即使通过添加最终返回来解决诊断问题,我担心这只会隐藏树后的森林。返回值将由非空向量中的第一个值确定。for循环没有做任何有用的事情。几乎可以肯定的是,整个算法都被破坏了。编译器诊断只是一个症状。首先非常感谢您的帮助!我要解决的问题是检查新的输入ID(字符串)是否已经存在于以前的输入中。因此,我尝试使用for循环调用存储在向量中的每个对象的ID,并将每个对象与新输入进行比较。新输入与原始代码的功能不同,也不符合原始代码的功能。@Sneftel,我知道原始代码的功能:这就是为什么要写一行代码来说明它的功能。除了在size==0时退出外,它也会执行相同的操作。如果是尺寸!=0,则原始代码存在于第一个循环中,即index==0
bool if_duplicate (const vector <Assignment> & assgt, const string & ID) {

   return (assgt.size() != 0) && (assgt[0].getId() == ID);
}