私は3つのクラスM、L、Pを持っています。それぞれカプセル化プラクティスのために.headerと.cppを持っています。それぞれの.headerと.cppC++クロス初期化フロート配列を初期化するときにcaseラベルにジャンプ
ここでは、L.cppにあるこの関数float L::calculate(arg,arg,arg,arg)
を持っています。これは、そのクラス自体から取られた引数です。しかし、私は別のクラスPを持っています
P.cppでは、私はLクラスの計算機能のget/setを持っています。クラスPにはコンストラクタもあります。デフォルトと1はargsを取ります(両方のコンストラクタでLを初期化します)
次にすべての実装が一緒になるクラスMにあります。その後、
float calculateThis[size]; // the size is fixed at 50.
xはサイズ
未満のループのために、私はこのでした:
私はこのようなfloat配列を作成しようとしています私が持っている
calculateThis[x] = newL[x].caculate(args,args,args,args);
newP.setCalculate(calculateThis[x]);
++x;
を上にも宣言する
L newL[size]; //Used for some other methods that i have wrote to get inputs and save it .
P newP[size];
私はこのエラーを取得するコンパイル時に:私は、float配列にfloatを返すcalcuated機能を保存しようとしています。基本的
crosses initialization of ‘float calculateThis[size]’
float calculateThis[size];
EDIT:
switch(choice)
{
case 1: // 1st Choice.
while(entry<size)
{
//getting user input and saving it by newL.set/newP.set
};
break;
case 2:
float calculateThis[size]; // the size is fixed at 50.
for(x=0,x<size)
{ calculateThis[x] = newL[x].caculate(newL.get(),newL.get(),newL.get(),newL.get());
newP.setCalculate(calculateThis[x]);
++x;
}
break;
default:break;
}
"_ブロックに転送することはできますが、初期化を使用して宣言をバイパスすることはできません。自動保存期間を持つローカル変数がスコープ内にないポイントから、スコープ内にあるポイントまでジャンプするプログラムは、変数がPODタイプ(3.9)を持ち、イニシャライザなしで宣言されていない限り、不正な形式になります。あなたのコードをもっと私たちに教えてください。おそらく、あなたがうんざりした 'case'ステートメントでしょう。 –
@GillBatesをチェックすると、いくつかのコードが追加されています。 – what