循环向量与对象

时间:2014-06-17 05:19:36

标签: c++ loops vector

所以我要做的是使用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;

}

3 个答案:

答案 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();
}