0
#include<iostream>
#include <string>
using namespace std;


class Car{
private: 

public: Car(int, string, int);
    Car(){}  //default constructor 
    void setbrake();
    void setacc();
    int year,speed;
     string make;

};


Car::Car(int year, string make, int speed = 0) //constructor with parameters
{ 
cout << "Enter your car's year." << endl;
cin >> year;
cout << "Enter your car's make. " << endl;
cin >> make;
cin.ignore();
speed = 0; }

void Car::setbrake(){  //first function
    speed = speed - 5;
    cout << "Your " << make << " is traveling at " << speed;
    cout << " MPH.";}

void Car::setacc(){   //second function
    speed = speed + 5;
    cout << "Your " << make << " is traveling at " << speed;
    cout << " MPH.";}




int main()
{
Car car1(0,"s");
cout << car1.make;
cout << car1.speed;
cout << car1.year;
car1.setacc();



system("pause");
return 0;
}

変数を 2 つのメンバー関数に表示するのに問題があり、メインには何も表示されません。速度変数は常に 49898575 になります <-- そのようなランダムに高い数値があり、それを 0 に初期化したと思います。クラスのプライベート変数とメンバー関数を接続するにはどうすればよいですか。パラメータを持つコンストラクタがその問題を処理すると思っていましたが、明らかにそうではありませんでした。誰かが私のためにこのコードを批評する時間をとってくれませんか. 髪を引っ張っていきます。

これがクラスに割り当てられた問題であり、これが私が目指していることですが、クラスとメンバー関数、およびそれらがどのように連携するかについては理解していません。

次のメンバ変数を持つ Car という名前のクラスを作成します。 • 年。車のモデル年を保持する int。

• 作る。車の型式を保持する文字列。

• 速度。車の現在の速度を保持する int。

さらに、クラスには次のメンバー関数が必要です。

• コンストラクタ。コンストラクターは、車の年とメイクを引数として受け取り、これらの値をオブジェクトの年とメイクのメンバー変数に割り当てる必要があります。コンストラクターは、速度メンバー変数を 0 に初期化する必要があります。

• アクセサー。オブジェクトの year、make、および speed メンバ変数から値を取得できるようにするには、適切なアクセサ関数を作成する必要があります。

• 加速します。加速関数は、呼び出されるたびに速度メンバー変数に 5 を追加する必要があります。

• ブレーキ。ブレーキ関数は、呼び出されるたびに速度メンバ変数から 5 を減算する必要があります。

Car オブジェクトを作成してから、accelerated 関数を 5 回呼び出すプログラムでクラスのデモを行います。加速関数を呼び出すたびに、車の現在の速度を取得して表示します。

次に、brake 関数を 5 回呼び出します。

ブレーキ関数を呼び出すたびに、車の現在の速度を取得して表示します。

4

1 に答える 1