如果我只知道C++中的基类,如何包含派生类

How to contain a derived class if I only know base class in C++

本文关键字:基类 何包含 派生 C++ 如果      更新时间:2023-10-16

如果我有一个基类Card。现在我有一个名为DeckOfCard的类,它包含几个卡:

class DeckOfCard
{
    private:
         vector<Card> deck;
         //....
}

然而,在这里,我真正想做的是让DeckOfCard持有一组Card的派生类,这可能是一些特定的卡类型,例如扑克。

我知道在Java中,我们可以做到这一点:

public class DeckOfCard <T extends Card>
{
    private ArrayList<T> deck;
    //...
}

我如何在C++中做到这一点?谢谢你的建议。:-)

使用指向父类的指针,即Card*

class DeckOfCard
{
    private:
         vector<Card*> deck;
         //....
}

假设您有一个从Card公开继承的类PokerCard,那么下面的语句是有效的。

PokerCard *pcard = new PokerCard();
deck.push_back(pcard);