C++ 为什么不在范围内宣布制动和加速?
嘿,伙计们,我被指派去调试和修复给定的代码。此任务在我们修复后应能正常工作: 在创建汽车对象的程序中演示该类,然后调用accelerate 功能五次。每次调用accelerate函数后,获取 汽车和展示它。然后,调用制动功能六次。每次制动后 功能,获取当前车速并显示它 这是我的问题-问题是一旦它运行,我会得到一个错误,说“加速”和“刹车没有在这个范围内声明”,这很奇怪,因为它们是应该放在正确位置的函数。如果我错过了什么,请告诉我,谢谢C++ 为什么不在范围内宣布制动和加速?,c++,C++,嘿,伙计们,我被指派去调试和修复给定的代码。此任务在我们修复后应能正常工作: 在创建汽车对象的程序中演示该类,然后调用accelerate 功能五次。每次调用accelerate函数后,获取 汽车和展示它。然后,调用制动功能六次。每次制动后 功能,获取当前车速并显示它 这是我的问题-问题是一旦它运行,我会得到一个错误,说“加速”和“刹车没有在这个范围内声明”,这很奇怪,因为它们是应该放在正确位置的函数。如果我错过了什么,请告诉我,谢谢 #include <math.h> #incl
#include <math.h>
#include <iostream>
#include <iomanip>
#include <cstring>
#include <cstdlib>
using namespace std;
class Car
{
private:
int YearModel;
int Speed;
string Make;
public:
Car(int, string, int);
string getMake();
int getModel();
int getSpeed();
int Accelerate(int aSpd);
int Brake(int bSpd);
void displayMenu();
};
Car::Car(int YearofModel, string Makeby, int Spd)
{
YearModel = YearofModel;
Make = Makeby;
Speed = Spd;
}
string Car::getMake()
{
return Make;
}
//To get the year of the car.
int Car::getModel()
{
return YearModel;
}
//To holds the car actual speed.
int Car::getSpeed()
{
return Speed;
}
//To increase speed by 5.
int Car::Accelerate(int aSpd)
{
aSpd = Speed;
Speed = Speed + 5;
return aSpd;
}
//To drop the speed of the car by 5.
int Car::Brake(int bSpd)
{
bSpd = Speed;
Speed = Speed - 5;
return bSpd;
}
void displayMenu()
{
cout << "\n Menu\n";
cout << "----------------------------\n";
cout << "A)Accelerate the Car\n";
cout << "B)Push the Brake on the Car\n";
cout << "C)Exit the program\n\n";
cout << "Enter your choice: ";
}
int main()
{
int Speed = 0; //Start Cars speed at zero.
char choice; //Menu selection
int year;
string carModel;
cout << "Enter car year: ";
cin >> year;
cout << "Enter the car model(without spaces): ";
cin >> carModel;
Car first(year, carModel, Speed);
//Display the menu and get a valid selection
do
{
displayMenu();
cin >> choice;
while (toupper(choice) < 'A' || toupper(choice) > 'C')
{
cout << "Please make a choice of A or B or C:";
cin >> choice;
}
//Process the user's menu selection
switch (choice)
{
case 'a':
case 'A': cout << "You are accelerating the car. ";
cout << Accelerate(first) << endl;
break;
case 'b':
case 'B': cout << "You have choosen to push the brake.";
cout << Brake(first) << endl;
break;
}
}while (toupper(choice) != 'C');
return 0;
system("pause");
}
#包括
#包括
#包括
#包括
#包括
使用名称空间std;
班车
{
私人:
国际模型;
整数速度;
串制;
公众:
Car(int,string,int);
字符串getMake();
int getModel();
int getSpeed();
int加速(int aSpd);
int制动器(int bSpd);
void displayMenu();
};
Car::Car(int YearofModel,字符串Makeby,int Spd)
{
YearModel=YearofModel;
Make=Makeby;
速度=Spd;
}
字符串Car::getMake()
{
退货;
}
//为了获得汽车年。
int Car::getModel()
{
回归模型;
}
//保持汽车的实际速度。
int Car::getSpeed()
{
返回速度;
}
//提高速度5。
int Car::加速(int aSpd)
{
aSpd=速度;
速度=速度+5;
返回aSpd;
}
//使汽车速度降低5。
内部车辆::制动器(内部bSpd)
{
bSpd=速度;
速度=速度-5;
返回bSpd;
}
void displayMenu()
{
不能选择;
}
//处理用户的菜单选择
开关(选择)
{
案例“a”:
案例“A”:可能应该是
first.Accelerate(speed)
这是加速的声明:
int Car::Accelerate(int aSpd)
这是一种Car
方法,它将int
作为参数
但你所做的是:
Accelerate(first)
这是一个函数调用(对一个名为加速
且未声明的函数),您正在传递一个汽车
它应该是
first.Accelerate(speed)
这是加速的声明:
int Car::Accelerate(int aSpd)
这是一种Car
方法,它将int
作为参数
但你所做的是:
Accelerate(first)
这是一个函数调用(对一个名为加速
且未声明的函数),您将传递给它一个汽车
,因为加速
和中断
是汽车
的函数,必须首先在汽车
对象上调用它们。加速(42)
在main
函数中使用Accelerate
和Break
时,它们被称为不存在的自由函数
在您的情况下,传递给
accelerate
和Break
的值并不重要,因为参数会被覆盖并且从不使用:
int Car::Accelerate(int aSpd)
{
aSpd = Speed;
// ...
}
由于
加速
和中断
是汽车
的功能,因此必须首先在汽车
对象上调用它们:加速(42)
在main
函数中使用Accelerate
和Break
时,它们被称为不存在的自由函数
在您的情况下,传递给
accelerate
和Break
的值并不重要,因为参数会被覆盖并且从不使用:
int Car::Accelerate(int aSpd)
{
aSpd = Speed;
// ...
}
哦,好吧,这就解决了。但现在当我运行程序时,它只是说我要输入模型并制作(这很奇怪)然后它显示3和0,然后说按任意键,然后就完成了…它不应该显示菜单,以及我是否想要加速或中断?我说它很奇怪,因为在int main中我有它,所以我输入了车年,然后输入了车型。不是同时…那么应该这样写吗?车先=新车(年份,carModel,速度)如果你说的是“不可以编译”的错误,那么你就定义了一个对象,但是分配了一个指针。当然,你在思考C++而不是java。我的坏,我认为C和C++看起来很相似,但是我错了。请不要理会我说的话。好的,好的,好的。程序,它只是让我输入模型并制作(这很奇怪)然后它显示3和0,然后说按任意键,然后就完成了…它不应该显示菜单,以及我是否想要加速或中断?我说它很奇怪,因为在int main中我有它,所以我输入了车年,然后输入了车型。不是同时…那么应该这样写吗?车先=新车(年份,carModel,速度)如果是这样,它说从Car到非标量型汽车的转换要求错误\@ KuraKura88,它不会编译!你定义一个对象,但是分配一个指针。当然,你在思考C++而不是java?我的坏,我认为C++看起来和C++类似,但是我错了。请不要理会我说的话。