如何声明包含队列成员的动态结构数组?

维克

这是来自已经上交的家庭作业。该程序是一种纸牌游戏,可以正确播放,但在游戏结束时会出现分段错误。我可以将核心转储跟踪到我的delete [] playerArr,但是我认为真正的问题在于如何声明我的playerArr。

我的 .h 文件中有一个构造函数、复制、重载运算符和析构函数,可以很好地与其他程序配合使用,所以我认为我的问题出在主要问题上。我在这里和谷歌上查看了其他几个问题,但还没有找到像这样的问题。以下是代码片段:

struct Player
{
  int currentHand;    //current number of cards in given player's hand
  Queue hand;         //queue to store player's hand
};

在主要我分配了一个结构数组,我认为这是我的问题。我已经尝试过各种方法并犯了错误,但这个方法允许我的程序编译和我的游戏按设计运行:

    //allocate array of Player structs
    Player *playerArr = new Player[numPlayers];
    for (int i = 1; i <= numPlayers; i++)
      playerArr[i].currentHand = 0;
    //enqueue playerArr.hand
    deal(playerArr, deck, numPlayers, currentDeck);

这是我删除前清理的顺序,cout之后核心转储:

   //exit do-while loop and end game
            }
  while (playerArr[currentPlayer - 1].currentHand != 0);


  for (int i = 1; i < numPlayers; i++)
    {
      while (playerArr[i].currentHand > 0)
        {
          playerArr[i].hand.dequeue(catchQ);
          playerArr[i].currentHand--;
        }
    }

  //empty all deck/discard stacks
  while (!deck.isEmpty())
    deck.pop(catchPop);
  while (!discard.isEmpty())
    discard.pop(catchPop);

  //reset hand/deck counters to defaults
  catchQ = 0;
  catchPop = 0;
  currentDeck = 52;
  currentPlayer = 1;
  numPlayers = 2;

  cout << "\n\n\n\t Good Game!" << endl << endl;

  //free dynamic memory
  delete [] playerArr;

我现在改变这个项目的成绩已经太晚了,在期末考试周我没有时间在办公时间拜访我的教授,所以如果有人为我提供解决方案,我可以从这个错误中吸取教训并继续前进。

谢谢

某程序员哥们

该问题的一个可能原因是您忘记了数组索引是从零开始的。

numPlayers元素数组的索引从0numPlayers - 1(包括)。

您展示的第一个循环不使用它,而是使用 if 从1to numPlayers,导致您将分配的内存索引到越界,从而导致未定义的行为

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何获得RingCentral呼叫队列成员的可用性?

来自分类Dev

无法声明结构的动态数组

来自分类Dev

如何将结构的动态数组传递给成员函数?

来自分类Dev

星号中的外部队列成员

来自分类Dev

星号看不到队列成员

来自分类Dev

如何正确清除包含结构的队列?

来自分类Dev

包含多个动态数组的c结构的分配

来自分类Dev

如何从C中的成员访问包含结构?

来自分类Dev

如何在结构数组中初始化和动态分配int指针成员?

来自分类Dev

如何在C ++中删除由动态分配的数组成员组成的动态分配的结构?

来自分类Dev

错误:弹性阵列成员不在结构结尾

来自分类Dev

如何使用const成员操作结构数组

来自分类Dev

通过成员为动态数组的函数初始化结构

来自分类Dev

填充包含char **数组作为成员C的结构

来自分类Dev

填充包含char **数组作为成员C的结构

来自分类Dev

包含函数作为成员 C++ 的结构数组

来自分类Dev

如何声明一个具有包含数组的结构的函数作为参数的函数,该数组的大小由argv确定。

来自分类Dev

是否可以直接从队列成员函数访问一对成员变量?

来自分类Dev

是否有带有队列限制的 ExecutorService 实现和用新成员替换旧队列成员的选项?

来自分类Dev

结构数组,成员别名

来自分类Dev

包含动态分配数组的结构中的段错误

来自分类Dev

从VBA调用Fortran 95 dll,其结构包含动态数组

来自分类Dev

如何制作动态分配的结构数组?

来自分类Dev

如何动态更新结构中的数组?

来自分类Dev

如何初始化包含数组的结构

来自分类Dev

C-创建一个动态的结构数组,结构成员打印错误的值?

来自分类Dev

如何平均分配阵列成员

来自分类Dev

如何在c中传递或声明数组成员?

来自分类Dev

如何为数组成员变量声明 getter/setter

Related 相关文章

  1. 1

    如何获得RingCentral呼叫队列成员的可用性?

  2. 2

    无法声明结构的动态数组

  3. 3

    如何将结构的动态数组传递给成员函数?

  4. 4

    星号中的外部队列成员

  5. 5

    星号看不到队列成员

  6. 6

    如何正确清除包含结构的队列?

  7. 7

    包含多个动态数组的c结构的分配

  8. 8

    如何从C中的成员访问包含结构?

  9. 9

    如何在结构数组中初始化和动态分配int指针成员?

  10. 10

    如何在C ++中删除由动态分配的数组成员组成的动态分配的结构?

  11. 11

    错误:弹性阵列成员不在结构结尾

  12. 12

    如何使用const成员操作结构数组

  13. 13

    通过成员为动态数组的函数初始化结构

  14. 14

    填充包含char **数组作为成员C的结构

  15. 15

    填充包含char **数组作为成员C的结构

  16. 16

    包含函数作为成员 C++ 的结构数组

  17. 17

    如何声明一个具有包含数组的结构的函数作为参数的函数,该数组的大小由argv确定。

  18. 18

    是否可以直接从队列成员函数访问一对成员变量?

  19. 19

    是否有带有队列限制的 ExecutorService 实现和用新成员替换旧队列成员的选项?

  20. 20

    结构数组,成员别名

  21. 21

    包含动态分配数组的结构中的段错误

  22. 22

    从VBA调用Fortran 95 dll,其结构包含动态数组

  23. 23

    如何制作动态分配的结构数组?

  24. 24

    如何动态更新结构中的数组?

  25. 25

    如何初始化包含数组的结构

  26. 26

    C-创建一个动态的结构数组,结构成员打印错误的值?

  27. 27

    如何平均分配阵列成员

  28. 28

    如何在c中传递或声明数组成员?

  29. 29

    如何为数组成员变量声明 getter/setter

热门标签

归档