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;}
}
然后,没有警告..?
答案 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;
}