函数返回非void {在eclipse CDT中}没有返回

时间:2016-07-22 22:48:37

标签: c++ eclipse c++11 eclipse-cdt

Save=0;
bool checking() const; ///declaration

inline bool isZombie() const  //definition
{ if(Save==0)   {return cc_t < 0}
  if(Save==1)  {return cc_i < 0;}
}
这是一个非常天真的问题。我理解代码中错误的含义。任何人都可以告诉我,为什么它不接受条件中的退货声明。 如果我把上面的代码写成

bool checking() const  //definition
{ if(Save==0)   {return cc_t < 0}
  else {return cc_i < 0;}
}

然后,没有警告..?

2 个答案:

答案 0 :(得分:3)

实际上Save的类型是什么?您在其他可能的分支中错过了return语句。那个警告有什么不清楚的?

inline bool isZombie() const  //definition
{ if(Save==0)   {return cc_t < 0;}
                             // ^ Supposed this is a typo
  if(Save==1)  {return cc_i < 0;}
  return false; // <<<<<<<<<<<<<<<<<<<<<<<<<<<
}

答案 1 :(得分:1)

一般来说,最好有一条确定的回报路径。

例如,一个可以将其写为(并保持代码大部分不受影响):

inline bool isZombie() const { 
   if(Save==0)
      return cc_t < 0;
  else
       return cc_i < 0;
}

或者,或者:

inline bool isZombie() const { 
  bool rVal = (cc_i < 0); 
  if(Save==0)
     return cc_t < 0;
  return rVal;
}