gpt4 book ai didi

c++ - 将 Vector 传递给另一个类

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:52:30 24 4
gpt4 key购买 nike

正如标题所示,我正在尝试将 vector 从一个类发送到另一个类。这是一些示例代码...

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;

};

这实际上是设置一个 vector ,用整数填充它,然后打乱整数。

我有第二节课...

class Dealer: public Deck
{
public:



void Hit();
void GetStoredDeck()
{

std::cout << cards.size() << std::endl;
}
void DealCard();
void DealerScore();
void IniDeal();
void CardPositions();

private:

};

我正在尝试将 vector 拉入此类,以便经销商可以使用整数。我可以使 vector protected ,但是 .size() 为 0。在第一个类中填充和洗牌后,有没有办法将它传递到这个类中?

编辑:

我没有太多关于类中函数的代码。我只是在处理骨架设置。

甲板.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
}
}

这是我必须填充 vector 并打乱元素的代码。

我想将洗牌后的 vector 用在发牌员类中。这样庄家可以获得 vector 中的下一个元素并用它做需要做的事情。

我所说的关于 size() 的是,如果我将 vector 设置为 protected 而不是私有(private)的,我可以通过继承使用该 vector ,但它是空 vector 而不是填充和打乱的 vector 。

最佳答案

您需要做的是在 Deck 构造函数中将 create cards 添加到 cards 中。这只是一个简单的示例,显示了基类和派生类之间的共享数据:

class Deck
{
public:
Deck() : cards{1,2} {} // C++11 supports initializer list
virtual ~Deck() {} // better declare base destructor as virtual

protected: // derived class can access protected base members
std::vector <int> cards;
};

class Dealer: public Deck
{
public:
Dealer() // Deck default constructor is called
{
}

void GetStoredDeck()
{
std::cout << cards.size() << std::endl;
}
};

int main(int argc, char* argv[])
{
Dealer dealer;
dealer.GetStoredDeck(); // you should see 2 cards now?
return 0;
}

关于c++ - 将 Vector 传递给另一个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14208726/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com