C ++无效的操作数和类型

时间:2013-11-22 18:37:47

标签: c++ arrays binary operands

在A和B的方程式中得到这些错误,然后其他错误来自于我试图将其传递给slopeit时的calcit结尾

  [Error] invalid operands of types 'int [3]' and 'int [3]' to binary 'operator*'
 [Error] invalid operands of types 'double' and 'int [3]' to binary 'operator*'
[Error] invalid conversion from 'int' to 'double*' [-fpermissive]
 [Error] cannot convert 'int*' to 'double*' for argument '2' to 'void slopeit      (double*,double*,       int, double&, double&, double&)'
     double slops[3], yints[3], boards[3];
     double yint15,yint20,yint25,slop15,slop20,slop25,rsq15,rsq20,rsq25;
     double board;

    void calcit (double tim15[], double tim20[], double tim25[], double tem15[],
        double tem20[], double tem25[], int indx, int board,int temperature)
     {
double B;
double A;
double time;
double slopsofslops;
double yofslopes;
double rsq;
double yint15,yint20,yint25,slop15,slop20,slop25,rsq15,rsq20,rsq25;
slopeit(tim15, tem15, indx, slop15, yint15, rsq15);
slopeit(tim20, tem20, indx, slop20, yint20, rsq20);
slopeit(tim25, tem25, indx, slop25, yint25, rsq25);


yints[0]=yint15;               
yints[1]=yint20;
yints[2]=yint25;

boards[0]=15;
boards[1]=20;
boards[2]=25;

slops[0]=slop15;
slops[1]=slop20;
slops[2]=slop25;


indx = 3;


time = pow(e,(temperature -B)/A);
A = (slops * boards) + yofslopes;
B = (yofslopes * boards) + yints; 

//Pass the values needed into writeit and finished 

slopeit(board, slops, indx, slopsofslops, yofslopes, rsq);
       }
  void slopeit(double x[], double y[], int n, double& m, double& b, double& r)

4 个答案:

答案 0 :(得分:1)

C ++没有任何内置运算符可以在数组上运行,你必须创建自己的重载。

对于最后的错误,int的数组(或指针)与double的数组(或指针)不同。您必须创建一个新的临时double数组,从int数组填充它,并将double数组传递给该函数。

答案 1 :(得分:0)

在你对slopeit()的调用中,你用电路板而不是电路板来调用第一个参数。板是双板,板是双[]。

答案 2 :(得分:0)

您需要根据您的定义将指针传递给函数

  slopeit(board, slops, indx, *slopsofslops, *yofslopes, *rsq);
       }
  void slopeit(double x[], double y[], int n, double& m, double& b, double& r)

答案 3 :(得分:0)

  

[错误]类型'int [3]'和'int [3]'到二进制的无效操作数   '操作符*'

此错误是由以下行引起的:

A = (slops * boards) + yofslopes;

污水和板都是双重型[3]。 C ++不能乘以数组。您需要使用可以支持它的其他类,例如Qt库中的QVector3D类,或者您需要在for循环中计算产品(交叉产品或点积)自己。

  

[错误]类型为'double'且'int [3]'为二进制的操作数无效   '操作符*'

此错误是由以下行引起的:

B = (yofslopes * boards) + yints; 

yofslopes是double类型,board是double [3]。同样,C ++不支持执行这些操作。它们是不兼容的类型。你可能想要执行一个for循环来将每个元素乘以yofslopes(你在这里之后是什么?)。您也无法将一个数组添加到另一个数组。

目前还不清楚你在这里要做什么,因为这是该行的单位分析:

double = (double * 3dVector) + 3dVector

这没有意义......

  

[错误]无效转换为'int'到'double *'[-fpermissive]

此错误来自以下行:

slopeit(board, slops, indx, slopsofslops, yofslopes, rsq);

你有一个名为board的全局变量,它是double类型(不是double *)。然后你定义了一个局部变量(在calcit的参数中)具有相同的名称,但类型为int(不是double *)。您不应该传入一个整数并将其解释为指针而不显式地转换它。

  

[错误]无法将参数'2'的'int *'转换为'double *'为'void   slopeit

不确定此错误的指示。

希望这有帮助!