在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)
答案 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
不确定此错误的指示。
希望这有帮助!