3

正午過ぎのプログラマー、これがコードであることに満足していることを願っています:

    #include<iostream.h>


void sum(int &a[])
{
         a[2] = a[1] +a[0];
         }


int main()
{
    int a[3]={4,2,0};
    sum(a);
    cout<<a[2]<<endl;
}

私のコンパイラは、「参照の配列としての「a」の宣言」および「「a」は宣言されていません(最初にこの関数を使用します)」と言い、どうすれば修正できますか?私はより大きなコードを持っていますが、関数で参照を使用して配列を配置する方法を知りたいのですが、構文の問題だと思います。解決策がどこにあるのかわからないので、ここに来てインターネットでよく検索しますが、わかりません問題の解決策を正しく検索する方法を知っている

元のコード:

  void Jump(int &y,int &y0, float V0 ,float &time, int &ground , int radius , int thickness_of_ground ,bool &protect_from_jump ,bool &ready_for_jump , bool (&key)[5])
  {
      int SPACE=4;
      float a_y=9.8;
      int FPS =60;

  if (protect_from_jump) key[SPACE]=false;

  if(!key[SPACE] && ground-(radius+thickness_of_ground)-y>0)
   {              
                  V0=0;
                  y=int(0.5*a_y*time*time -V0*time + y0);
                  time +=6.0/FPS;
                  protect_from_jump=true;
                  }
                  else if (!key[SPACE] &&  ground-(radius+thickness_of_ground)-y<=0)
                  {

                      y=ground -(radius+thickness_of_ground);
                      y0=y;
                      time=0;
                      protect_from_jump=false;

                  }

  if(key[SPACE])
  {
                if (ready_for_jump)
                {
                y0=y;
                ready_for_jump = false;
                }
              V0=40;  
              y=int(0.5*a_y*time*time -V0*time + y0);
              time +=6.0/FPS;

              if(ground-(radius+thickness_of_ground)+1-y<=0)
              {
              ready_for_jump=true;
              y=ground-(radius+thickness_of_ground);
              y0=y;
              time=0;
              key[SPACE]=false;
              }
                } 

}

4

1 に答える 1

5

本当に参照の配列を宣言しようとしていますか? もしそうなら、あなたはできません。

ただし、配列への参照を宣言する場合 (この特定のケースでは理由がわかりません)、 .[]よりも優先順位が高いため、それを括弧で囲む必要があり&ます。さらに、その場合、配列に次元を指定する必要があります。そうしないと、コンパイラ エラーになります。

void sum(int (&a)[10])
{
    // do stuff
}
于 2013-07-08T18:30:23.543 に答える