Как говорит заголовок, у меня есть этот код здесь
#include <iostream>
#include <string>
using namespace std;
class SpaceShip{
public:
int fuel;
SpaceShip(int f){
this->fuel=f;
}
bool ConsumeFuel(int f){
cout<<"Consuming "<<f<<" fuel\n";
if (this->fuel<f){
this->fuel=0;
cout<<"Out of Fuel\n";
return false;
}
else{
this->fuel=this->fuel-f;
if (this->fuel==0){
cout<<"Out of Fuel\n";
}
return true;
}
}
void PrintResources(){
cout<<"Available: "<<this->fuel<<"\n\n";
return;
}
};
class MissionSelector{
public:
bool select(SpaceShip sps){
while(true){
cout<<"Choose exploration\n\n";
string id;
cin>>id;
if(id=="exploration"){
return this->exploration(sps);
}
else{
cout<<"No valid id selected!\n";
}
}
}
private:
bool exploration(SpaceShip sps){
bool result=sps.ConsumeFuel(20);
if (result){
cout<<"Mission completed correctly!\n\n";
}
else{
cout<<"Mission Failed, not enough resources!\n\n";
}
return result;
}
};
int main(){
MissionSelector selector;
SpaceShip sps(100);
sps.ConsumeFuel(20);
bool end=false;
int score=0;
while(!end){
sps.PrintResources();
if(selector.select(sps)){
score++;
}
else{
end=true;
}
}
return 0;
}
Когда я вызываю ConsumeFuel (x) из основного, он просто отлично редактирует переменную топлива объекта, когда я делаю это из метода исследования объектаКласс MissionSelector (который я вызываю в методе выбора из MissionSelector, который вызывается в основном) возвращает значение true, но никогда не редактирует переменную топлива.
Существуют другие части кода, которые я пропустил, поскольку это просто другойдетали не очень помогают в обнаружении ошибки, которая есть здесь, это в основном другие ресурсы и другие миссии.И stackoverflow продолжает говорить мне, что не хватает деталей, потому что это в основном код, но на самом деле все здесь, и больше ничего, я добавлю пару строк, чтобы сделать его счастливым.
Может кто-нибудь помочь мне здесь?Действительно спасибо!