[英]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.