我正在学习类并将成员变量传递给书中的函数"从C ++开始:早期对象"。
现在,我正在编写第7章中的编程挑战,我似乎无法解决这个问题。我的问题是我似乎无法将speed
变量传递给我的accelerate()
函数,并且每次使用它时都会将其添加为5.
我尝试过几种不同的方式修改它,现在可能已经过时了。如果你不理解我在做什么,这里是挑战的说明:
编写一个名为Car的类,其中包含以下成员变量:
年。一个拥有汽车模型年的int。
请。一个字符串对象,用于保存汽车的品牌。
速度。保持汽车当前速度的int。
此外,该类应具有以下成员函数。
构造。构造函数应该接受汽车的年份并作为参数并将这些值分配给对象的年份并制作成员变量。构造函数应该将speed成员变量初始化为0。
存取器。应创建适当的访问器函数,以允许从对象年,制造和加速成员变量中检索值。
加速。加速函数每次调用时都应该从速度成员变量中加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);
}
}
答案 0 :(得分:1)
您的代码有一个额外的构造函数,指令没有要求。并且构造函数都没有初始化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;
}