所以我要做的是使用vector制作一个多个对象。现在我的程序工作正常,如果我不使用矢量,如果我只有一个对象。那么我怎么能让我的BoxOfProduce类有更多的对象使用向量。我尝试了你所看到的面前你的工作,但程序然后崩溃,说没有回应。我知道我必须在某个地方使用推回物,但不知道在哪里。我只发布了主要功能,所以你不必看整个程序,因为它太大了。
int main()
{
int x;
int size;
vector<BoxOfProduce>box;
cout<<"How many boxes you want";
cin>>size;
for ( x = 0; x < size; x++)
{
box[x].setItemAry();
box[x].randomPick();
box[x].display();
box[x].change();
box[x].display2();
}
//BoxOfProduce box;
//box.setItemAry();
//box.randomPick();
//box.display();
//box.change();
//box.display2();
getchar();getchar();
return 0;
}
答案 0 :(得分:2)
您正在访问矢量中的对象而不创建它们。你的代码应该是这样的:
for ( x = 0; x < size; x++)
{
BoxOfProduce obj; //create an object
obj.setItemAry();
obj.randomPick();
//.. set other properties
box.push_back(obj); //insert it into the vector
}
vector<BoxOfProduce>box;
只会创建一个向量,但它不包含任何BoxOfProduce
个对象。因此,当您尝试访问对象时,程序崩溃。
答案 1 :(得分:0)
您需要创建对象并将它们放入向量中:
vector<BoxOfProduce> boxes;
for (int i = 0; i < 10; i++)
{
BoxOfProduce box;
box.setItemAry();
box.randomPick();
box.display();
box.change();
box.display2();
boxes.push_back(box); // Put a box into your vector
}
答案 2 :(得分:0)
您也可以这样做,
vector<BoxOfProduce>box;
cout<<"How many boxes you want";
cin>>size;
for ( x = 0; x < size; x++)
{
BoxOfProduce obj; //create an object
box.push_back(obj); //insert it into the vector
}
for ( x = 0; x < size; x++)
{
box[x].setItemAry();
box[x].randomPick();
box[x].display();
box[x].change();
box[x].display2();
}