我有这两个类:
class Hand
{
public:
int getTotal();
std::vector<Card>& getCards();
void add(Card& card);
void clear();
private:
std::vector<Card> cards;
};
class Deck : public Hand
{
public:
void rePopulate();
void shuffle();
void deal(Hand& hand);
};
shuffle()函数声明如下:
void Deck::shuffle()
{
std::random_shuffle(cards.begin(), cards.end());
}
但是,这会返回以下错误:
'Hand::cards' : cannot access private member declared in class 'Hand'
我应该只包括一个函数,如:std :: vector< Card>& getCards()还是有另一种方法来避免错误.
最佳答案 您可以将卡声明为受保护的:
class Hand
{
public:
int getTotal();
std::vector<Card>& getCards();
void add(Card& card);
void clear();
protected:
std::vector<Card> cards;
};
class Deck : public Hand
{
public:
void rePopulate();
void shuffle();
void deal(Hand& hand);
};