[英]Passing member variables to functions
我正在從“從 C++ 開始:早期對象”一書中學習類並將成員變量傳遞給函數。
現在,我正在處理第 7 章中的一個編程挑戰,我似乎無法解決這個問題。 我的問題是我似乎無法將speed
變量傳遞給我的accelerate()
函數,並在每次使用時將其添加 5。
我已經嘗試以幾種不同的方式對其進行修改,現在可能還差得很遠。 如果你不明白我在做什么,這里是挑戰的說明:
編寫一個名為 Car 的類,它具有以下成員變量:
年。 一個保存汽車型號年份的整數。
制作。 保存汽車品牌的字符串對象。
速度。 一個保存汽車當前速度的整數。
此外,該類應具有以下成員函數。
構造函數。 構造函數應該接受汽車的年份和 make 作為參數,並將這些值分配給對象的年份和 make 成員變量。 構造函數應將 speed 成員變量初始化為 0。
配件。 應創建適當的訪問器函數以允許從對象 year、make 和 speed 成員變量中檢索值。
加速。 每次調用時,加速函數都應該從 speed 成員變量中加 5。
制動。 制動函數每次調用時應從速度成員變量中減去 5。
在創建 Car 對象然后調用加速函數五次的程序中演示該類。 每次調用加速函數后,獲取汽車的當前速度並顯示出來。 然后,調用剎車功能五次。 每次調用剎車功能后,獲取汽車的當前速度並顯示出來。
這是我目前所擁有的:
#include <iostream>
#include <string>
using namespace std;
class Car {
public:
int year, speed;
string make;
void accelerate(int);
void brake(int);
string getMake(string);
int getYear(int);
int getSpeed(int);
Car(int year, string make, int speed = 0) {
}
Car() {
}
};
void Car::accelerate(int s) {
speed += 5;
cout << "Your speed is " << s << endl;
}
void Car::brake(int speed) {
speed -= 5;
}
string Car::getMake(string) {
return make;
}
int Car::getYear(int) {
return year;
}
int Car::getSpeed(int) {
return speed;
}
int main() {
Car myCar;
int mySpeed = 0;
myCar.getSpeed(mySpeed);
for (int i = 1; i <= 5; i++) {
myCar.getSpeed(mySpeed);
myCar.accelerate(mySpeed);
}
}
你的代碼有一個額外的構造函數,說明沒有要求。 並且這兩個構造函數都沒有初始化year
和speed
成員,因此它們以隨機值開始( make
成員被初始化為空字符串,因為std::string
有自己的默認構造函數,該構造函數被隱式調用)。
您的accelerate()
方法沒有增加speed
成員的值,就像說明中告訴您的那樣。
您的方法都有未使用的輸入參數,應該刪除。
代碼應該看起來更像這樣:
#include <iostream>
#include <string>
using namespace std;
class Car
{
private:
int year, speed;
string make;
public:
Car(int yr, string mk);
void accelerate();
void brake();
string getMake();
int getYear();
int getSpeed();
};
Car::Car(int yr, string mk) :
year(yr), speed(0), make(mk)
{
}
void Car::accelerate()
{
speed += 5;
}
void Car::brake()
{
speed -= 5;
}
string Car::getMake()
{
return make;
}
int Car::getYear()
{
return year;
}
int Car::getSpeed()
{
return speed;
}
int main()
{
Car myCar(2017, "Honda");
for (int i = 1; i <= 5; i++)
{
myCar.accelerate();
cout << "Your speed is " << myCar.getSpeed() << endl;
}
for (int i = 1; i <= 5; i++)
{
myCar.brake();
cout << "Your speed is " << myCar.getSpeed() << endl;
}
return 0;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.