2017-03-22 34 views
-5

我正在爲我的C++類寫一個汽車類程序,而Visual Studio不能使用的唯一部分與「字符串和make」有關。我評論他們,程序運行得很好。我們的老師要求我們將其分成3個獨立的頁面。標題中發佈的錯誤是MISSING TYPE SPECIFIER。事實證明,所有需要的是「使用命名空間標準;」在car.h文件中。錯誤:缺少類型說明符

謝謝你的幫助。

#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; 
    } 

這裏是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(); 


}; 

這裏是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

你的問題中缺少重要的東西。這將是一個真正的問題。 「我的作業不編譯」,甚至沒有顯示編譯錯誤,這不是一個問題。 –

+0

提問有關家庭作業的問題沒有什麼特別的錯,但是,提出一個問題。顯示你迄今爲止所嘗試的內容,並且展示什麼是/不適合你。一般來說,「我的代碼不起作用」不是一個很好的方式來獲得迴應。更具體地說,當您嘗試編譯時會發生什麼錯誤,以及您嘗試修復它們的步驟? – user2366842

+0

您將setMake定義爲返回一個字符串,但不使用返回值,並且不返回任何內容。 – stark

回答

0

在你setMake功能它聲明爲一個字符串,但沒有返回值。我相信你忘了回傳通過的價值。

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

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

} 

我建議做下一次採取什麼編譯器輸出細看,因爲它可能給你一個行號以及問題是功能的連名字。

備註:通常設置的函數被聲明爲void,因爲它們通常不需要返回任何東西。

+0

謝謝你,這是非常有幫助的。原來,我的老師不知道什麼原因視覺工作室,決定了uising命名空間std;從car.h文件中丟失。我的老師說,因爲它與主驅動器相連,它不應該需要它。但那是什麼導致類型說明符錯誤。 –

相關問題