1. ホーム
  2. c++

[解決済み] C++の戻り値が-858993460と表示される。

2022-02-02 01:45:55

質問

私はc++の初心者で、ユーザーに年式と車種を尋ねる自動車クラスのプログラムを作ろうとしています。 このプログラムは、ユーザーに年式と車種を尋ね、次に速度を入力します。この速度は常に0から始まり、5mphの加速を5回、5mphのブレーキを5回行います。 ヘッダーファイルと2つのcppファイルでプログラムを作成しなければなりません。 速度の戻り値は不正確で、次のように出てきます。

車の年式を入力してください: 2000 車種を入力してください。シボレー 初速は-858993460です。

現在の速度は:-858993455mphです。

現在の速度は、-858993450 mphです。

現在の速度は、-858993445 mphです。

現在の速度は、-858993440mphです。

現在の速度は、-858993435mphです。

現在の速度は、-858993440mphです。

現在の速度は、-858993445 mphです。

現在の速度は、-858993450 mphです。

現在の速度は、-858993455 mphです。

現在の速度は、-858993460 mphです。

任意のキーを押して続行 . . .

何が間違っているのか、どなたか教えていただけませんか?今まで持っているものを添付しました。 どんな助けでも非常に感謝します。ありがとうございます。

#define CAR_H
#include <string>
using namespace std;

class Car 
{
   private:
        int yearModel;
        string make;
        int speed;

    public:
        Car(int, string);
    void accelerate();
        void brake();
       int getSpeed ();

};

#include <iostream>
#include "Car.h"
using namespace std;

Car::Car(int carYearModel, string carMake)
{
    int yearModel = carYearModel;
    string make = carMake;
int speed = 0;
}

void Car::accelerate()
{
    speed += 5;
}

void Car::brake()
{
    speed -= 5;
}

int Car::getSpeed()
{
    return speed;
}

int getYear(int year)
{
    return year;
}

string getMake(string make)
{
return make;
}

#include "Car.h"
#include <iostream>
#include <sstream>
#include <iomanip>
using namespace std;

int main()
{
    int count;
int yr;
string mk;
int getSpeed;

cout << "Enter the year of the car: ";
cin >> yr;

cout << "Enter the make of the car: ";
cin >> mk;

Car myCar(yr, mk);

    cout << "The starting speed is "  
    <<  myCar.getSpeed() << endl << endl;

    for ( count = 0; count < 5; count++)
    {
        myCar.accelerate();
        cout << "The current speed is: " << myCar.getSpeed() 
        << " mph." << endl;
    } 

    for ( count = 0; count < 5; count++)
    {
        myCar.brake();
        cout << "The current speed is: " << myCar.getSpeed() 
        << " mph." << endl;
    }

    system ("pause");

    return 0;
}

解決方法は?

このコードでは

 Car::Car(int carYearModel, string carMake)
 {
      int yearModel = carYearModel;
      string make = carMake;
      int speed = 0;
 }

のデータメンバに代入しているわけではありません。 Car オブジェクトを作成します。その代わりに、フィールドと同じ名前のローカル変数を宣言し、そのローカル変数に代入しているのです。

これを解決するには、型を削除します。

 Car::Car(int carYearModel, string carMake)
 {
      yearModel = carYearModel;
      make = carMake;
      speed = 0;
 }

これが役立つといいのですが