初始化float数组时,c ++交叉初始化跳转到case标签

时间:2016-10-20 08:07:36

标签: c++ arrays linux ubuntu g++

我有3个类M,L,P,每个都有自己的.header和.cpp用于封装练习我已经在每个.header和.cpp中分别放了相关的函数和属性

我在L.cpp中有这个函数float L::calculate(arg,arg,arg,arg),它只是一个固定的公式,它从类本身中获取参数。但我有另一个班级P

在P.cpp中,我得到/设置了L类的计算函数。在P类中,我也有构造函数,1个默认值和1个接受args(我在两个构造函数中初始化L)

然后在我的班级M中,所有的实现都聚集在一起。

我正在尝试创建一个这样的浮点数组:

float calculateThis[size]; // the size is fixed at 50.

然后在for循环中,其中x小于大小

我这样做了:

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];

当我编译时我得到这个错误:

  crosses initialization of ‘float calculateThis[size]’
   float calculateThis[size];

基本上我正在尝试保存将float返回到float数组的计算函数

修改

    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;  
    }

1 个答案:

答案 0 :(得分:1)

使用括号表示这是calculateThis的本地范围:

    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;