当 do-while 再次启动时,对象将被删除.我怎么能阻止它
Object being deleted when do-while starts again. How can I stop it?
>我在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));
相关文章:
- Arduino millis() - millis() 怎么能等于 0 以外的任何东西?
- 我已经建立了递归关系,它找到了两个字符串之间最长的连续公共字符串,我怎么能跳过其中一个字符串中的一个字符
- 我们怎么能 me 字符数组只接受 C++ 中的字母
- 你怎么能emplace_back错误的类型?
- 我怎么能有一个以2D数组为参数的函数,而数组有一个我想更改的参数/维度
- 我怎么能把它转换成c++呢
- 我有一个调用ID3D11DeviceContext::CopySubresourceRegion的循环.我怎么能强制等待
- 类定义怎么能不占用内存?
- 怎么能用memcpy复制工会简单的成员?
- 当 do-while 再次启动时,对象将被删除.我怎么能阻止它
- 指针怎么能有一个字符串作为它的值
- 一个函数怎么能完成它的目标,只是在返回主函数后崩溃?
- 这两个指针怎么能有相同的值
- glTranslatef拉伸我的球体,我怎么能不拉伸它就平移球体
- 我怎么能像 numpy 那样从 MxN 矩阵中减去 1xN 特征矩阵
- 我怎么能写一个长度函数来返回间隔的长度
- 我怎么能设法从我的代码中获得复数的答案
- 我怎么能在不使用BITSet的情况下知道C 中的位状态
- 如果指针已经被删除,指针容器怎么能拥有指针的所有权
- 我怎么能理解,如果一个指针被删除在c++