繁体   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