C++重启main而不会丢失变量

Bob*_*ski 1 c++ program-entry-point

我程序的主要功能显示一个开关菜单.当输入选项1时,调用一个"洗牌"一系列"卡片"的函数.在混洗完成后,该函数通过调用main()将程序返回到开头,以便再次显示菜单.

我遇到的问题是菜单的选项4将混洗数组写入文件.但是当洗牌然后重新启动程序时,阵列数据会丢失,因此输出的文件都是垃圾.有没有办法重新启动main()而不丢失数据?

我在一个班级,我可以使用的工具受到限制,因此只有最基本的代码才可以接受.基本上,我正在寻找像goto但更安全的东西(顺便说一句,goto,在这个课程中也被禁止).

tem*_*def 7

对于C++程序来说,调用自己的main函数实际上并不是一个好主意.实际上,这会导致未定义的行为,这意味着您无法保证程序的行为.它可能会崩溃,或继续处理损坏的数据,或格式化您的硬盘等等(尽管最后一个不太可能).

我认为这反映了您的计划如何运作的一个更基本的问题.如果您希望数据在函数之间保持不变,则需要将该数据放在不会被其他函数破坏的地方.例如,您可以将数据放入堆中,然后将指针传递给周围的数据.或者,您可以将其定义为局部变量main,然后将其传递给函数,并在完成后返回这些函数.您还可以考虑制作表示数据的对象,然后将这些对象传递到不同的函数中.

在没有看到你的代码的情况下,我怀疑我能否给出更具体的答案.在设计程序时,请记住数据流.想一想哪些数据需要去哪里以及如何去那里.

希望这可以帮助!