C++ 为什么不在范围内宣布制动和加速?

C++ 为什么不在范围内宣布制动和加速?,c++,C++,嘿,伙计们,我被指派去调试和修复给定的代码。此任务在我们修复后应能正常工作: 在创建汽车对象的程序中演示该类,然后调用accelerate 功能五次。每次调用accelerate函数后,获取 汽车和展示它。然后,调用制动功能六次。每次制动后 功能,获取当前车速并显示它 这是我的问题-问题是一旦它运行,我会得到一个错误,说“加速”和“刹车没有在这个范围内声明”,这很奇怪,因为它们是应该放在正确位置的函数。如果我错过了什么,请告诉我,谢谢 #include <math.h> #incl

嘿,伙计们,我被指派去调试和修复给定的代码。此任务在我们修复后应能正常工作: 在创建汽车对象的程序中演示该类,然后调用accelerate 功能五次。每次调用accelerate函数后,获取 汽车和展示它。然后,调用制动功能六次。每次制动后 功能,获取当前车速并显示它

这是我的问题-问题是一旦它运行,我会得到一个错误,说“加速”和“刹车没有在这个范围内声明”,这很奇怪,因为它们是应该放在正确位置的函数。如果我错过了什么,请告诉我,谢谢

#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++类似,但是我错了。请不要理会我说的话。