由於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