0

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ます。*and & とはどういう意味ですか? ありがとうございました

4

1 に答える 1

2

そのような一時的なアドレスを取ることはできません。

代わりに、新しいローカル変数を作成して渡します。

double val = imu.ypr[2];
PID* nsController = new PID(&val, &nsOut, 
                         &nsSet, 7, 0.0, 1.1, REVERSE);
于 2013-03-30T02:35:49.157 に答える