「Policy」クラスのコンストラクターには2つの異なるバージョンがあります。コンストラクターの1つを使用しているときに、参照によってPolicyオブジェクトを渡すことができないようです。また、その理由がわかりません。
オーバーロードされたコンストラクター:
Policy::Policy(int testing) {
initAge=160;
initState=1;
reset();
x[0]=4;
x[1]=2;
ub[0]=10;
ub[1]=10;
lb[0]=0;
lb[1]=0;
}
Policy::Policy() {
initAge=160;
initState=1;
reset();
x[FRQ]=4;
x[BEG]=40*4;
x[END]=75*4;
for(int i=0; i<240; i++)
x[2+i]=4.0;
x[GS]=2;
lb[0]=1;
ub[0]=80;
for(int i=1;i<3;i++) {
lb[i]=160;
ub[i]=400;
}
for(int i=3;i<243;i++) {
lb[i]=1;
ub[i]=16;
}
lb[243]=2;
ub[243]=4;
}
これがエラーを出す私のコードです。
void sampleMIXD(Constraints& space, Policy& p);
int main(int argc, char** argv) {
// Policy policy(1); // Works
Policy policy(); // Does not work
Constraints space(2);
sampleMIXD(space, policy);
return 0;
}
エラーメッセージ:
'../main.cpp:64:エラー:タイプ' Policy(*)()'の一時からのタイプ'Policy'の非定数参照の無効な初期化 ../MIXD.h:12:エラー:「voidsampleMIXD(Constraints&、Policy&)」の引数2を渡す際に
Policy policy();
でコンパイルする代わりにPolicy policy(1);
、コンパイラは文句を言いません。助けてください!:)