2017-03-22 16 views
-5

Ich schreibe ein Auto-Klassen-Programm für meine C++ - Klasse, und der einzige Teil, mit dem Visual Studios nicht arbeiten wird, ist irgendetwas mit "string and make" zu tun. Ich habe sie auskommentiert und das Programm läuft gut. Unser Lehrer hat uns gebeten, es auf 3 separate Seiten aufzuteilen. Der Fehler, wie er im Titel steht, lautet MISSING TYPE SPECIFIER. Stellt sich heraus, alles, was benötigt wurde, war "namespace std;" in der Datei car.h.FEHLER: Fehlender Typ-Spezifizierer

Vielen Dank für Ihre Hilfe.

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


    int main() 
    { 
     // Declare car object 
     Car myCar; 
     int speed = 0, year; 
     string make; 


     cout << "This program will help you with your Car!" << endl; //   intro message 

     cout << "Please enter the Year" << endl; // store year 
     cin >> year; 

     cout << "Please enter the Make of the car" << endl; // store make 
     cin >> make; 


     // call member functions to set car year and make. 
     myCar.setYear(2013); 
     myCar.setMake("Mustang GT"); 

     // call member functions to get car year and make 
     cout << "Your car's current year is: " << myCar.getYear() << endl; 
     cout << "Your car's current make is: " << myCar.getMake; 
     cout << "Your car's current speed is : " << speed << " mph" << endl; 





     return 0; 
    } 

Hier ist Car.h

#pragma once 
#ifndef CAR_H 
#define CAR_H 



// Car class declaration 
class Car 
{ 
    private: 
     string make; 
     int year; 
     int speed; 

    public: 
     int myCar(int year, string make, int speed); 

     int setYear(int carYear); 

     int setSpeed(int carSpeed); 

     string setMake(string carMake); 

     int getYear(); 

     int getSpeed(); 

     string getMake(); 

     void accelerate(); 

     void brake(); 


}; 

Und hier ist Car.cpp

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


//*** 
//myCar 
//** 
int Car::myCar(int year, string make, int speed) 
{ 
    int setYear(int year); 
    string setMake(string make); 
    return year, make, speed; 
} 


//********** 
// setYear 
//********* 
int Car::setYear(int carYear) 
{ 
    year = carYear; 
    return carYear; 

} 


//************ 
// setMake 
//************ 
string Car::setMake(string carMake) 
{ 

    make = carMake; 


} 
//***  

//*** 
//setSpeed 
//*** 
int Car::setSpeed(int carSpeed) 
{ 
    speed = carSpeed; 
    return carSpeed; 


} 
//*** 

//*** 
//getYear 
//*** 
int Car::getYear() 
{ 

    return year; 

} 
//*** 

//*** 
//getMake 
//*** 
string Car::getMake() 
{ 
    return make; 

} 


//*** 
//getSpeed 
//*** 
int Car::getSpeed() 
{ 

    return speed; 

} 
//*** 

//*** 
// Accelerate 
//*** 
void Car::accelerate() 
{ 
    int speed = 0; 
    speed += 5; 


} 
//*** 

//*** 
// Brake 
//*** 
void Car::brake() 
{ 
    int speed = 0; 
    speed -= 5; 

} 
//*** 
+3

Etwas wichtiges fehlt in Ihrer Frage. Das wäre eine tatsächliche Frage. "Meine Hausaufgaben kompilieren nicht", ohne auch nur den Übersetzungsfehler zu zeigen, ist keine Frage. –

+0

Nichts ist speziell falsch mit Fragen über Hausaufgaben, aber ja, stellen Sie eine Frage. Zeigen Sie, was Sie bisher versucht haben, und erweitern Sie, was für Sie nicht funktioniert. Im Allgemeinen ist "mein Code nicht funktioniert" nicht eine sehr gute Möglichkeit, eine Antwort zu erhalten. Genauer gesagt, welche Fehler passieren, wenn Sie versuchen und kompilieren, und welche Schritte haben Sie durchlaufen, um zu versuchen, sie zu beheben? – user2366842

+0

Sie haben setMake definiert, um eine Zeichenfolge zurückzugeben, aber Sie verwenden keinen Rückgabewert, und Sie geben nichts zurück. – stark

Antwort

0

In Ihrer setMake Funktion ist es als String deklariert, aber gibt keinen Wert zurück. Ich glaube, du hast vergessen, den übergebenen Wert zurückzugeben.

//************ 
// setMake 
//************ 
string Car::setMake(string carMake) 
{ 

    make = carMake; 
    return make; // This line should do the trick 

} 

ich vorschlagen, einen genaueren Blick auf das, was der Compiler gibt beim nächsten Mal nehmen, da es Ihnen eine Zeilennummer und auch den Namen der Funktion wahrscheinlich gab, wo das Problem war.

Seitennotiz: Allgemein festgelegte Funktionen werden als void deklariert, da sie normalerweise nichts zurückgeben müssen.

+0

Vielen Dank das war sehr hilfreich. Es stellte sich heraus, dass mein Lehrer aus irgendeinem Grund keine visuellen Studios kannte, entschied sich für den üblichen Namespace; fehlte in der car.h Datei. Mein Lehrer sagte, da es mit dem Hauptlaufwerk verbunden ist, sollte es es nicht brauchen. Aber das ist, was den Typ Specifier Fehler verursacht hat. –

Verwandte Themen