当 do-while 再次启动时,对象将被删除.我怎么能阻止它

Object being deleted when do-while starts again. How can I stop it?

本文关键字:删除 怎么能 对象 do-while 启动      更新时间:2023-10-16

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

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

提前感谢,对于任何错误,我们深表歉意。第一次写在这里。:)

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

do-while 循环之外创建对象。这样,当do-while再次开始时,它不会被破坏。

尽管展示您的代码将有助于我们进一步帮助您。

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