temp=(int)sqrtf((p_data[cxDib*j+i]-p_data[cxDib*j+(i-1)])*(p_data[cxDib*j+i]-p_data[cxDib*j+(i-1)])+(p_data[cxDib*j+i]-p_data[cxDib(j-1)+i])*(p_data[cxDib*j+i]-p_data[cxDib*(j-1)+i]));
上面代码显示这样的错误
F:\工程文件\test_picuure\test_picuureDlg.cpp(279) : error C2064: term does not evaluate to a function
是什么问题呢?是sqrtf这个算法有问题么?

解决方案 »

  1.   

    试下这样:
    float fval=(p_data[cxDib*j+i]-p_data[cxDib*j+(i-1)])*(p_data[cxDib*j+i]-p_data[cxDib*j+(i-1)])+(p_data[cxDib*j+i]-p_data[cxDib(j-1)+i])*(p_data[cxDib*j+i]-p_data[cxDib*(j-1)+i]);
    int temp =(int)sqrtf(fval);话说你是做什么的,怎么有这么烦的计算的?
      

  2.   

    p_data[cxDib(j-1)+i] 应该是 p_data[cxDib*(j-1)+i] 吧
      

  3.   


    对耶,改过来之后出现这个问题了。F:\工程文件\test_picuure\test_picuureDlg.cpp(281) : error C2064: term does not evaluate to a function
    还是针对上面那段代码。
      

  4.   


    p_data cxDib i j 是怎么定义的复杂的关系式最好分开来写 这样容易确定问题点double a = (p_data[cxDib*j+i]-p_data[cxDib*j+(i-1)]);
    double b = (p_data[cxDib*j+i]-p_data[cxDib*j+(i-1)]);
    double c = (p_data[cxDib*j+i]-p_data[cxDib*(j-1)+i]);
    double d = (p_data[cxDib*j+i]-p_data[cxDib*(j-1)+i]);
    temp=(int)sqrt(a*b + c*d);
      

  5.   

    “F:\工程文件\test_picuure\test_picuureDlg.cpp(281) : error C2064: term does not evaluate to a function

    就是说想调用的函数,不被编译器认为是函数。sqrtf ?
      

  6.   


    int temp=(int)sqrtf((p_data[cxDib*j+i]-p_data[cxDib*j+(i-1)])*
        (p_data[cxDib*j+i]-p_data[cxDib*j+(i-1)])+
        (p_data[cxDib*j+i]-p_data[cxDib*(j-1)+i])*
        (p_data[cxDib*j+i]-p_data[cxDib*(j-1)+i])
        );
    错在:
    (p_data[cxDib*j+i]-p_data[cxDib(j-1)+i])*
    应该:
    (p_data[cxDib*j+i]-p_data[cxDib*(j-1)+i])*
      

  7.   

    cxDib(j-1)将被编译器认为是函数调用(就是 xx(y)),
    但有没有。
    所以就:
    ‘term does not evaluate to a function’