1. ホーム
  2. c++

[解決済み] エラーです。メンバーはアクセスできません

2022-02-02 20:18:11

質問

以下の2つのクラスがあります。

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() それとも、このエラーを回避する別の方法がありますか?

解決方法を教えてください。

カードは protected :

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);
};