I'm having a problem with the code below. Can anyone help me?
#include <iostream>
#include <string>
using namespace std;
class Aircraft
{
public:
Aircraft() : MPrice(0), LPrice(0), BPrice(0), PPrice(0), TotalPrice(0) , Stars(0) {cout<<"aircraft constructor"<<endl;}
virtual ~Aircraft(){cout<<"aircraft destructor"<<endl;}
protected:
string Missile;
string Laser;
string Bomb;
string Propulsion;
int MPrice, LPrice, BPrice, PPrice, TotalPrice;
int Stars;
};
class Jet : public Aircraft
{
public:
string GetMissile() {return Missile;}
int MissilePrice() {return MPrice;}
string GetLaser() {return Laser;}
int LaserPrice() {return LPrice;}
string GetBomb() {return Bomb;}
int BombPrice() {return BPrice;}
string GetPropulsion() {return Propulsion;}
int PropulsionPrice() {return PPrice;}
void SetMissile(int MissileChoice)
{
switch(MissileChoice)
{
case 0: Missile = "Air-to-air missile";
MPrice = 300;
break;
case 1: Missile = "Air-to-surface missile";
MPrice = 600;
break;
}
}
void SetLaser(int LaserChoice)
{
switch(LaserChoice)
{
case 0: Laser = "Hydrogen Fluoride Laser";
LPrice = 100;
break;
case 1: Laser = "Deuterium Fluoride Laser";
LPrice = 225;
break;
}
}
void SetBomb(int BombChoice)
{
switch(BombChoice)
{
case 0: Bomb = "Cluster Bomb";
BPrice = 600;
break;
case 1: Bomb = "Concrete Bomb";
BPrice = 700;
break;
}
}
void SetPropulsion(int PropulsionChoice)
{
//Jet.Propulsion
switch(PropulsionChoice)
{
case 0: Propulsion = "Solid-fuel Propulsion";
PPrice = 750;
break;
case 1: Propulsion = "Liquid Rocket Propulsion";
PPrice = 849;
break;
}
}
int GetTotalPrice() {TotalPrice = MPrice+LPrice+BPrice+PPrice;
return TotalPrice;}
int GetStars(int (Jet::*pGTPrice)() )
{
int Price = pGTPrice();
cout<<GetTotalPrice()<<"-PRICE!"<<endl;
for (int i=1; i<13; i++)
{
if ( Price>=(1200+(100*i)) && Price< (1300+(100*i)) )
{
Stars=i;
cout<<i<<"-STARS!"<<endl;
//return Stars;
break;
}
}
return Stars;
}
};// end class jet: public aircraft
int main()
{
Jet You;
int MissileChoice, LaserChoice, BombChoice, PropulsionChoice;
cout<<"choose the missile, laser, bomb, propulsion of the jet"<<endl;
cin>>MissileChoice;
cin>>LaserChoice;
cin>>BombChoice;
cin>>PropulsionChoice;
You.SetMissile(MissileChoice);
You.SetLaser(LaserChoice);
You.SetBomb(BombChoice);
You.SetPropulsion(PropulsionChoice);
cout<<"you chose "<<endl;
cout<<You.GetMissile()<<endl;
cout<<You.GetLaser()<<endl;
cout<<You.GetBomb()<<endl;
cout<<You.GetPropulsion()<<endl;
cout<<endl<<"total price is "<<You.GetTotalPrice()<<endl;
Jet* ptr=0;
ptr=new Jet;
int (Jet::*pPrice)() = Jet::GetTotalPrice;
cout<<"You have produced a "<<ptr->GetStars(pPrice)<<"-starred JET!";
delete ptr;
cin.ignore();
cin.ignore();
return 0;
}
I'm getting an error with
int Price = pGTPrice();
inside the GetStars function