2016-08-03 9 views
1

Hey Leute, ich wurde beauftragt, einen bestimmten Code zu debuggen und zu reparieren. Diese Zuordnung soll als solche funktionieren, nachdem wir sie behoben haben: Demonstrieren Sie die Klasse in einem Programm, das ein Auto-Objekt erstellt, und ruft dann die Beschleunigung Funktion fünf Mal auf. Rufen Sie nach jedem Aufruf der Beschleunigungsfunktion die aktuelle Geschwindigkeit des Autos ab und zeigen Sie diese an. Rufen Sie dann die Bremsfunktion sechs Mal auf. Nach jedem Aufruf der Funktion Bremse, die aktuelle Geschwindigkeit des Fahrzeugs erhalten und anzeigenWarum wird nicht gebremst und beschleunigt im Geltungsbereich?

Hier ist, was ich habe - Das Problem ist, wenn es läuft bekomme ich eine Fehlermeldung, dass „Beschleunigen“ und „Bremse nicht erklärt im umfang soll dieser bereich "was komisch ist, da sie angeblich Funktionen an den richtigen stellen haben. Lass mich wissen, wenn ich etwas verpasst habe danke !!!

#include <math.h> 

#include <iostream> 
#include <iomanip> 

#include <cstring> 
#include <cstdlib> 

using namespace std; 
class Car 
{ 
private: 
    int YearModel; 
    int Speed; 
    string Make; 
public: 
    Car(int, string, int); 
    string getMake(); 
    int getModel(); 
    int getSpeed(); 
    int Accelerate(int aSpd); 
    int Brake(int bSpd); 
    void displayMenu(); 
}; 
Car::Car(int YearofModel, string Makeby, int Spd) 
{ 
    YearModel = YearofModel; 
    Make = Makeby; 
    Speed = Spd; 
} 
string Car::getMake() 
{ 
    return Make; 
} 
//To get the year of the car. 
int Car::getModel() 
{ 
    return YearModel; 
} 
//To holds the car actual speed. 
int Car::getSpeed() 
{ 
    return Speed; 
} 
//To increase speed by 5. 
int Car::Accelerate(int aSpd) 
{ 
    aSpd = Speed; 
    Speed = Speed + 5; 
    return aSpd; 
} 
//To drop the speed of the car by 5. 
int Car::Brake(int bSpd) 
{ 
    bSpd = Speed; 
    Speed = Speed - 5; 
    return bSpd; 
} 
void displayMenu() 
{ 
    cout << "\n Menu\n"; 
    cout << "----------------------------\n"; 
    cout << "A)Accelerate the Car\n"; 
    cout << "B)Push the Brake on the Car\n"; 
    cout << "C)Exit the program\n\n"; 
    cout << "Enter your choice: "; 
} 
int main() 
{ 
    int Speed = 0; //Start Cars speed at zero. 
    char choice; //Menu selection 
    int year; 
    string carModel; 
    cout << "Enter car year: "; 
    cin >> year; 
    cout << "Enter the car model(without spaces): "; 
    cin >> carModel; 


    Car first(year, carModel, Speed); 

    //Display the menu and get a valid selection 
    do 
    { 
     displayMenu(); 
     cin >> choice; 
     while (toupper(choice) < 'A' || toupper(choice) > 'C') 
     { 
      cout << "Please make a choice of A or B or C:"; 
      cin >> choice; 
     } 
     //Process the user's menu selection 


     switch (choice) 
     { 
     case 'a': 
     case 'A': cout << "You are accelerating the car. "; 
     cout << Accelerate(first) << endl; 
     break; 
     case 'b': 
     case 'B': cout << "You have choosen to push the brake."; 
      cout << Brake(first) << endl; 
      break; 
     } 
    }while (toupper(choice) != 'C'); 


    return 0; 
    system("pause"); 

} 

Antwort

4

Es sollte Dies ist die Erklärung von Accelerate

first.Accelerate(speed) 

sein:

int Car::Accelerate(int aSpd) 

Es ist eine Methode von Car, die eine int als Argument.

Aber was Sie tun, ist:

Accelerate(first) 

, die einen Funktionsaufruf (auf eine Funktion Accelerate genannt, die nicht angemeldete), und Sie vorbei es eine Car.

0

Als Accelerate und Break sind Funktionen eines Car, müssen sie auf einem Car Objekt aufgerufen werden: first.Accelerate(42). Wenn Sie Accelerate und Break in der main Funktion verwenden, werden sie als freie Funktionen aufgerufen, die nicht vorhanden sind.


In Ihrem Fall spielt es keine Rolle, was Sie passieren zu Acceleate und Break Werte, da die Argumente überschrieben werden und nie verwendet:

int Car::Accelerate(int aSpd) 
{ 
    aSpd = Speed; 
    // ... 
} 
+0

Oh ok süß, die das festgelegt. Aber jetzt, wenn ich das Programm laufen lasse, sagt es nur für mich, das Modell zu tippen und zu machen (was komisch ist) und dann zeigt es 3 und 0 an, dann drückt irgendeine Taste und dann ist es fertig ... Sollte es das Menü anzeigen und ob ich beschleunigen oder brechen will? –

+0

Ich sage es ist komisch, weil ich es im int main hatte, also habe ich ein Jahr ins Auto einsteigen lassen. Nicht zur gleichen Zeit ... –

+0

Also sollte es so geschrieben werden? Auto zuerst = neues Auto (Jahr, carModel, Geschwindigkeit); wenn es heißt, dass die Umwandlung von Car * zu nicht skalaren Auto angefordert Fehler \ –

Verwandte Themen