如何解决创建基类对象数组,并存储派生类对象
我有一个基类 Card 和一个派生类 SkillCard,声明如下:
class SkillCard : public Card
{
private:
int skillType;
int numberValue;
public:
SkillCard();
SkillCard(int x,string z,int y,int w);
};
当卡片被声明时:
class Card
{
public:
string name;
int manaCost;
Card();
string printCard();
Card(string x,int y);
};
我在牌组中存储了不同类型的卡片(最终会有 AttackCard、PowerCard 等),因此卡片在牌组中存储为:
SkillCard increaseCard(0,"Increase Strength",0.05,5);
userDeck.addCard(increaseCard,1);
userDeck 是deck 类的对象,声明为:
class Deck
{
private:
int size;
Card* deck = new Card[1];
public:
Deck();
Deck(int x);
void addCard(Card toAdd,int place);
Card getCard(int place);
void setSize(int x);
int getSize();
void changeDeck();
void deleteDeck();
};
然而,当我尝试从牌组中返回一张卡片时出现问题,如 SkillCard returned = userDeck.getCard(1);
那样,因为它返回的是卡片类型。我可以将此返回的 Card 类型转换为 SkillCard 吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。