我试图创建一个PID控制器:
PID* nsController = new PID(&double(imu.ypr[2]*), &nsOut,
&nsSet, 7, 0.0, 1.1, REVERSE);
error: expected primary-expression before 'double'
imu.ypr
是float ypr[3]
;
PID候选者是:PID::PID(double*, double*, double*, double, double, double, int)
这个错误是什么意思?以及如何解决?我只是想将float
转换为double
。
*
和&意思?谢谢
答案 0 :(得分:1)
你不能把这样的临时地址拿走。
相反,创建一个新的局部变量并将其传递给:
double val = imu.ypr[2];
PID* nsController = new PID(&val, &nsOut,
&nsSet, 7, 0.0, 1.1, REVERSE);