タイトルが示すように、あるクラスから別のクラスにベクトルを送信しようとしています。サンプルコードを次に示します。
class Deck
{
public:
//constructor
Deck(){}
~Deck(){} //deconstructor
//global for setting deck size
int SetDeckMultiplier;
//Card SetUp
//access vector
std::vector<int> GetCopyOfVector(){return cards;}
//set deck size based on multiplier
void SetDeckSize();
//shuffle card vector
void shuffle();
//End Card Setup
protected:
private:
std::vector <int> cards;
};
これは基本的に、intをシャッフルするのではなく、ベクトルを設定し、intで埋めます。
私は2番目のクラスを持っています...
class Dealer: public Deck
{
public:
void Hit();
void GetStoredDeck()
{
std::cout << cards.size() << std::endl;
}
void DealCard();
void DealerScore();
void IniDeal();
void CardPositions();
private:
};
ディーラーがintを使用できるように、ベクトルをこのクラスにプルしようとしています。ベクトルを保護することはできますが、.size()は0です。最初のクラスで塗りつぶされてシャッフルされた後、このクラスに渡す方法はありますか?
編集:
クラスの関数のコードはあまりありません。スケルトンのセットアップを行っていました。
Deck.cpp
void Deck::SetDeckSize()
{
for (int i = 0; i < (52 * SetDeckMultiplier); i++)
{
cards.push_back(i);
}
//set card values
for (int i = 0; i > (52 * SetDeckMultiplier); i++)
{
cards[i] = i;
}
}
void Deck::shuffle()
{
for (int i = 0; i < (52 * SetDeckMultiplier); i++)
{
int r = i + (rand() % ((52 * SetDeckMultiplier) - i)); // Random remaining position.
int temp = cards[i]; cards[i] = cards[r]; cards[r] = temp; //swap cards
while (cards[i] >= 52) cards[i] = cards[i] - 52; //loop to ensure correct number for display
//std::cout << cards[i] << std::endl;//display random cards.. for now
}
}
これは、ベクトルを埋めて要素をシャッフルする必要があるコードです。
シャッフルされたベクトルをディーラークラスで使用したいと思います。このようにして、ディーラーはベクトル内の次の要素を取得し、それを使用して実行する必要があることを実行できます。
size()について私が言っていたのは、ベクトルをプライベートではなく保護すると、継承を介してベクトルを使用できるということですが、これは空のベクトルであり、塗りつぶされてシャッフルされたものではありません。