请教!!!一个函数中调用另一个定义的函数报错,单独调用那函数是正确的,不知怎么回事?
double neij(Vector v1,Vector v2)//定义向量内积函数
{
Matrix m;
v2.zhuanzhi();
m=vec2mat(v2)*vec2mat(v1);
return m.array[0][0];
}
此函数单独调用是正确的
double fanv2neij(Vector v)//向量2范数
{
double sum;
sum=neij(v,v);
sum=sqrt(sum);
return sum;
}
用上面的函数,调用neij时报错如下:
 error C2065: 'neij' : undeclared identifier-----
                         -------------指向fanv2neij中“sum=neij(v,v);”
 error C2373: 'neij' : redefinition; different type modifiers----
                         -------------指向neij的一行“{”一下的定义都无误
Matrix vec2mat(Vector v)--把向量转成矩阵
Matrix,Vector分别是矩阵,向量类

解决方案 »

  1.   

    函数实现和调用之前先声明
    double neij(Vector v1,Vector v2); //定义向量内积函数
    double fanv2neij(Vector v); //向量2范数
      

  2.   

    函数变量中最好使用引用 :
    double neij(Vector& v1,Vector& v2) ; //定义向量内积函数
    double fanv2neij(Vector& v); //向量2范数,最好先声明一下。、
      

  3.   

    在A函数中调用B函数时,如果B函数的定义部分写在A函数之前,编译时系统就事先获得了B函数的信息,不用声明也可以使用;而如果B函数的定义部分在A函数之后,那么编译时系统遇到引用B的语句时不知道B是什么东东,自然就出错了。这个问题的根本在于编译系统编译时(默认情况下)是顺序地,一句一句地编译的。