0

私はロボットと呼ばれる研究室のためのプログラムを書いています。コンパイルすると、次の一連のエラーが発生します。

Robot.cpp:43:13:エラー:「double」の前に非修飾IDが必要です

Robot.cpp:43:13:エラー:「double」の前に「)」が必要です

クラスはRobot.hヘッダーで定義されており、問題の原因となっている.cppのコードは次のようになります。

/*
 * Name: Robot (constructor)
 *
 * Creates the robot with the given maximum speed.
 */

 Robot( double maxSpd ) 

 {

      MAX_SPEED = maxSpd;
      traveled = 0 ;
      elapsed = 0 ;
      x = 0 ;
      y = 0 ;

 }

エラーが発生する理由がわかりません...また、そのエラーが何を意味するのかもわかりません。どうすれば解決できますか?

4

2 に答える 2

3

私はあなたのエラーを再現することができました。

まず第一に、署名の後のそのセミコロンは行かなければなりません。関数を定義しようとしているときに、関数を宣言しています。

Robot(double maxSpd){...}//セミコロンなし

第二に、まず第一に、これはあなたのクラスの外にあるので、あなたはそれを修飾する必要があります:

Robot::Robot(double maxSpd) {...}

次に、MAX_SPEEDは定数なので、メンバー初期化子に入れる必要があります。

Robot::Robot(double maxSpd)
    : MAX_SPEED(maxSpd) {...}

最後に、残りの割り当ても初期化リストに移動する必要があります(必須ではありませんが、実行することをお勧めします)。クラス定義で宣言されている順序でリストする必要があることに注意してください。

Robot::Robot(double maxSpd)
    : MAX_SPEED(maxSpd), traveled(0), elapsed(0), x(0), y(0) {
//body, which, from your example, would now be empty
}
于 2012-09-25T01:09:27.653 に答える
2

考えられる問題は、開き角かっこの前にセミコロンがあることである可能性があります。しかし、クラス全体を見なければ、そう言うのは難しいでしょう。

このコードがクラス宣言内にない場合は、「Robot()」コンストラクター名の前に「Robot::」名前空間の指定がない可能性があります。

例:

Robot::Robot(double maxSpd)
{
   MAX_SPEED = maxSpd;
   traveled = 0;
   elapsed = 0;
   x = 0;
   y = 0;
}
于 2012-09-25T01:17:13.537 に答える