从一个向量的末尾向另一个向量添加指针到类实例

时间:2015-12-22 18:34:58

标签: c++ class pointers object vector

因此在程序中有一个名为cardDeck的向量,它包含多个指向名为Card的类实例的指针:

std::vector<Card*> cardDeck;                                

同样,还有一个名为charCards的第二个向量,它还包含多个指向名为card的类实例的指针:

std::vector<Card*> charCards;                              

程序功能的一部分是将指向卡类实例的指针从cardDeck向量的末尾添加到charCards向量的末尾:

charCards.push_back(cardDeck.back());                                                                               //Add the card selected from the deck to the Player's vector of initialisation cards

例如,如果你从第一张牌开始:

enter image description here

然后添加第二张卡片,而不是显示与第二张卡片对齐的第一张卡片,这样就应该发生这样的事情:

enter image description here

相反,只有第二张卡片(即添加到矢量中的最新卡片)会呈现在屏幕上:

enter image description here

问题是 - 为什么属于charCards向量中最后一个实例之前的卡类实例的精灵会在添加新的实例时停止渲染?

1 个答案:

答案 0 :(得分:2)

某处,在代码中你没有向我们展示,你正在创建一个指向局部变量的指针,并将该指针推入容器中。然后,你又来了。再一次。

事实是,那些所有悬空指针,它们甚至可能包含相同的地址(虽然这不能保证)。这就是为什么你在每个元素中都看到相同的值。

  • 不要存储指针,或
  • 不要存放悬空指针。