2

我有一个 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;
    }
}

除了定义的结果之外,我看不到如何通过我的代码获得任何其他结果。

谢谢。

4

2 回答 2

8

因为在您的最终 else 或 if 块之外没有 return 语句。

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

于 2013-04-15T19:40:00.003 回答
4

子句内既没有return语句也没有语句。throwelse

于 2013-04-15T19:40:08.613 回答