簡體   English   中英

將成員變量傳遞給函數

[英]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);

}

}

你的代碼有一個額外的構造函數,說明沒有要求。 並且這兩個構造函數都沒有初始化yearspeed成員,因此它們以隨機值開始( 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM