C++ 我想创建一个向量来保存类

C++ 我想创建一个向量来保存类,c++,class,vector,C++,Class,Vector,我很困惑如何制作一个向量来保存类。 如果我想在一个向量中保存一组数据,如下面的示例所示。然后将数据写入一个类成员函数中,并能够被其他函数调用和使用 向量声明贴在哪里? 请帮忙 #include <vector> class Card { public: int suit; int rank; Card::Card(int suit, int rank); Function(); }; vector<Card> cards; i

我很困惑如何制作一个向量来保存类。 如果我想在一个向量中保存一组数据,如下面的示例所示。然后将数据写入一个类成员函数中,并能够被其他函数调用和使用

向量声明贴在哪里? 请帮忙

#include <vector>

class Card
{
   public:
    int suit;
    int rank;
    Card::Card(int suit, int rank);
    Function();
};

 vector<Card> cards;

int main()
{
}
Card::Function()
 {
    for loop...
     Card cardz(i, i);
    cards.push_back(cardz);
} 
#包括
班级卡
{
公众:
内服;
整数秩;
卡片::卡片(整数套装,整数等级);
函数();
};
向量卡;
int main()
{
}
卡片::函数()
{
对于循环。。。
卡德兹(i,i);
卡片。向后推(cardz);
} 

这里有两个简单的选项。在头文件中使用
extern
声明更接近您编写的内容:

// something.h
extern vector<Card> cards;

// something.cpp
vector<Card> cards;
静态
成员可以像任何其他成员一样是
公共
私有
。如果它是
public
,任何不在
Card
方法中且使用
cards
的代码都必须将其称为
Card::cards


无论哪种方式,您都必须弄清楚如何使用所需的内容对其进行初始化……

这里有两个简单的选项。在头文件中使用
extern
声明更接近您编写的内容:

// something.h
extern vector<Card> cards;

// something.cpp
vector<Card> cards;
静态
成员可以像任何其他成员一样是
公共
私有
。如果它是
public
,任何不在
Card
方法中且使用
cards
的代码都必须将其称为
Card::cards


无论哪种方式,您都必须弄清楚如何使用所需的内容对其进行初始化……

在我看来,您正在扩展
对象应该做的事情的范围。我可以建议如下布局吗?首先定义一张卡

接下来,定义一个对象,该对象包含卡片的
向量
,并对其进行操作。让我们称之为
Deck

class Deck {
  public:
    Deck();

  private:
    vector <Card> cards;
};

在我看来,您正在扩展
对象应该做的事情的范围。我可以建议如下布局吗?首先定义一张卡

接下来,定义一个对象,该对象包含卡片的
向量
,并对其进行操作。让我们称之为
Deck

class Deck {
  public:
    Deck();

  private:
    vector <Card> cards;
};

有很多例子,例如@ NIKOLAI N FISTSOVIM IM使用VisioExpress C++,我不想与Linux乱成一团,尤其是因为IM已经困惑,谢谢!在Linux中,编程实际上非常简单,也不那么复杂。
卡的定义唯一明显的错误是它应该是
std::vector
,而不是
vector
。您可能希望将
设置为类
的静态数据成员,我不确定。另外,您的构造函数
Card::Card
应该是
Card
,而
Function
需要一个返回类型。“哪一个特定的编译器错误是困扰你的?”@ FalMARRI与Linux相比,更容易,我只需要确保它在Windows上工作,有很多例子,例如@ NIKOLAI N FISTSOVIM IM使用VisioExpress C++,并且我不想与Linux混淆,特别是因为IM已经混淆了,谢谢!在Linux中,编程实际上非常简单,也不那么复杂。
卡的定义唯一明显的错误是它应该是
std::vector
,而不是
vector
。您可能希望将
设置为类
的静态数据成员,我不确定。另外,您的构造函数
Card::Card
应该是
Card
,而
Function
需要一个返回类型。哪个特定的编译器错误困扰着你?@falmari linux的一切都比较简单,我只需要确保它在Windows上工作。你需要知道向量可能会对它包含的项做什么-特别是复制。你需要知道向量可能会对它包含的项做什么-特别是复制。
Deck::Deck() {
  for (int suit = 0; suit < 4; suit++) {
    for (int rank = 0; rank < 13; rank++) {
      cards.push_back(Card(suit, rank));
    }
  }
}