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

标签 c++ class vector

正如标题所示,我正在尝试将 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 保护起来,但是 .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
    }
}

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

我想采用洗牌后的 vector 并在经销商类中使用它。这样经销商就可以获得 vector 中的下一个元素并用它来做需要做的事情。

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

最佳答案

您需要做的是将 create cards 添加到 Deck 构造函数中的 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/

相关文章:

c++ - 如何从 C++ 调用 JNI DLL

python - 如何在Python中的两个不同类之间进行运算符重载

c++ - 中途反转/交换

c++ - 我可以对不同的网址使用相同的 curl 句柄吗? (试图从一个网址的多个页面下载数据)

c++ - 有没有一种在转换后使用 views::filter 的有效方法? (范围适配器)

c++ - 简单 CUDA 代码中的数值错误

c++ - "When"编译器是否隐式声明了默认构造函数?

c++ 类继承,未定义对 'Class::Constructor()' 的引用

c++ - std::vector::size() 是否比手动跟踪大小慢?

C++将csv读入vector,getline()问题