我在do-while中创建了一个菜单,当用户选择他想做的菜单时,菜单再次出现。问题是,对于某些选择,我的程序必须创建对象,但当菜单再次出现时,对象将被销毁。
我可以阻止这种情况发生吗?
在这里做的是:
do
{
cout << "What would you like to do?(a,b,c or d)" << endl;
cout << "a. Add a player to a team. " << endl;
cout << "b. View team's stats." << endl;
cout << "c. View player's stats." << endl;
cout << "d. Exit." << endl;
cin >> choice;
cout << endl;
switch(choice)
{
case'a':
cout << "Choose team(1. maxhtes or 2. diashmoi)";
cin >> omada;
addPlayer(omada);
break;
.
.
.
.
}
while(choice != 'd');
这里是创建元素的函数..
void addPlayer(int om)
{
if(om ==1)
{
cout << "Give Player's name,sex,occupation,age and the object he has:"
<< endl;
cin >> name1 >> sex1 >> occupation1 >> age1 >> object1;
if(maxhtes.numberOfPlayers==0)
Player player0(name1,sex1,occupation1,age1,object1);
.
.
.
我已经跳过了你不需要的部分。
提前致谢并对任何错误表示歉意。第一次写这里。 :)
解决的问题:创建了一个全局对象数组并将新对象放在那里。谢谢所有尝试过的人!
答案 0 :(得分:0)
在do-while循环中创建OUTSIDE对象。这样,当do-while再次启动时,它不会被破坏。
虽然显示您的代码可以帮助我们进一步帮助您。
答案 1 :(得分:0)
if(maxhtes.numberOfPlayers==0)
Player player0(name1,sex1,occupation1,age1,object1);
您正在if语句的范围内创建一个对象,该对象将在离开此范围时被销毁。相反,您可能希望将其保存在矢量中,例如:
std::vector<Player> players; // outer scope
//later..
if(maxhtes.numberOfPlayers==0)
players.push_back(Player(name1,sex1,occupation1,age1,object1));