由于Carcigenicate已经评论,一个通常的方法是写一个函数
#include <iostream>
using namespace std;
int getNumberWeapons(int numberPistols, int numberKnives)
{
return numberPistols + numberKnives;
}
int main() {
int numberPistols = 5;
int numberKnives = 18;
cout << "Number of Pistols: " << numberPistols << endl;
cout << "Number of Knives: " << numberKnives << endl;
cout << "Total of Weapons: " << getNumberWeapons(numberPistols, numberKnives) << endl;
cout << "There's a new Pistol available!" << endl;
numberPistols = numberPistols + 1;
cout << "New amount of Pistols " << numberPistols << endl;
cout << "Updated total of Weapons " << getNumberWeapons(numberPistols, numberKnives) << endl;
return 0;
}
一个更好的解决办法是使一个类。这可能被夸大了,但如果你想扩展你的“武器库”,这将是合适的。它增加了几个成员函数来操纵类的状态并访问它们。
#include <iostream>
using namespace std;
class WeaponCabinet
{
public:
void setNumberPistols(int pistols)
{
numberPistols = pistols;
}
void setNumberKnives(int knives)
{
numberKnives = knives;
}
void addPistol()
{
++numberPistols;
}
void addKnive()
{
++numberKnives;
}
void removePistol()
{
if (numberPistols == 0) return;
--numberPistols;
}
void removeKnive()
{
if (numberKnives == 0) return;
--numberKnives;
}
int getNumberKnives()
{
return numberKnives;
}
int getNumberPistols()
{
return numberPistols;
}
int getNumberWeapons()
{
return numberKnives + numberPistols;
}
private:
int numberPistols;
int numberKnives;
};
int main() {
WeaponCabinet weaponCabinet;
weaponCabinet.setPistols(5);
weaponCabinet.setKnives(18);
cout << "Number of Pistols: " << weaponCabinet.getNumberPistols() << endl;
cout << "Number of Knives: " << weaponCabinet.getNumberKnives() << endl;
cout << "Total of Weapons: " << weaponCabinet.getNumberWeapons() << endl;
cout << "There's a new Pistol available!" << endl;
weaponCabinet.addPistol();
cout << "New amount of Pistols " << weaponCabinet.getNumberPistols() << endl;
cout << "Updated total of Weapons " << weaponCabinet.getNumberWeapons() << endl;
return 0;
}
这样你有刀和手枪之间的直接连接,并没有每次都传给他们的功能getNumberWeapons
。
如果您不需要整个类处理你的武器最先进的技术是使用lambda(它是更接近使用功能的解决方案)
#include <iostream>
using namespace std;
int main() {
int numberPistols = 5;
int numberKnives = 18;
auto numberWeapons = [&numberPistols, &numberKnives]()
{
return numberPistols + numberKnives;
};
cout << "Number of Pistols: " << numberPistols << endl;
cout << "Number of Knives: " << numberKnives << endl;
cout << "Total of Weapons: " << numberWeapons() << endl;
cout << "There's a new Pistol available!" << endl;
numberPistols = numberPistols + 1;
cout << "New amount of Pistols " << numberPistols << endl;
cout << "Updated total of Weapons " << numberWeapons() << endl;
return 0;
}
你不是递增numberWeapons的价值 – Zeokav
你不能写'INT numberWeapons = numberPistols + numberKnives;'在并且期望它在每次更改变量时进行更新。该行只执行一次,只执行一次。您需要在更改后手动更新'numberWeapons'。编写一个函数也是解决这个问题的典型方法,但是如果你只是将2个值加在一起,为这样一个小任务创建一个函数将会使逻辑错乱。 – Carcigenicate
C++通过源代码自上而下运行程序。这个添加手枪和刀的线是该程序的第三条线,并且将在该点执行。 C++没有什么魔法可以回到那条线并重新计算任何东西。 – PaulMcKenzie