do-while再次启动时删除对象。我怎么能阻止它?

时间:2017-04-08 11:37:13

标签: c++ object do-while

我在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);
.
.
.

我已经跳过了你不需要的部分。

提前致谢并对任何错误表示歉意。第一次写这里。 :)

解决的问题:创建了一个全局对象数组并将新对象放在那里。谢谢所有尝试过的人!

2 个答案:

答案 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));