【发布时间】:2015-12-22 18:34:58
【问题描述】:
所以在程序中有一个叫做 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
例如,如果您从第一张卡片开始:
然后添加第二张卡片,而不是像这样显示第一张卡片与第二张卡片对齐,这是应该发生的:
相反,只有第二张卡片(即添加到向量中的最新卡片)被渲染到屏幕上:
问题是 - 为什么在添加新的 charCards 向量中的最后一个实例之前属于卡片类实例的精灵会停止渲染?
【问题讨论】:
-
你能澄清“数据丢失”吗?
-
基本上我使用 SFML 来表示游戏中的图形,并且每个卡片类实例都包含一个用于在视觉上表示它的精灵 - 每个指向 cardDeck 向量中卡片类实例的指针都有一个表示它的初始化精灵,并且渲染函数遍历每个实例并渲染其精灵。问题是当卡片从一个向量传输到另一个向量时,仅呈现向量中的最后一个卡片类实例,这表明数据丢失。
标签: c++ class pointers object vector