if..else警告“并非所有控制路径都返回一个值”

时间:2013-04-15 19:38:57

标签: c++ loops return warnings

我有一个if ... else语句,并且在编译时收到警告“并非所有控制路径都返回值”。谁能告诉我为什么我会收到这个警告?

我的代码:

template<typename T>                                                                        
double NumericArray<T>::Dot(const NumericArray& na)
{
    if (Size() == na.Size())
    {
        double result = 0;
        for (int i=0; i<Size(); i++)
        {
            result += ((na.GetElement(i))*(GetElement(i)));
        }
        return result;
    }
    else 
    {
        cout<<"Error! Dot Product Operands Number Of Elements Unequal"<<endl;
    }
}

我没有看到通过我的代码可以达到除定义结果之外的任何其他内容。

感谢。

2 个答案:

答案 0 :(得分:8)

因为你的最后一个或if块之外没有return语句。

如果此条件if (Size() == na.Size())的计算结果为false,则该方法不会返回值。

答案 1 :(得分:4)

return条款中既没有throw语句也没有else