2014-06-17 73 views
0

所以我試圖做的是使用向量來創建多個對象。現在我的程序工作正常,如果我不使用向量,如果我只有一個對象。所以我怎麼能讓我的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

你確定你需要使用的載體?如果在用戶輸入大小後項目的數量永遠不會改變,那麼說BoxOfProduce box [] = new BoxOfProduce [size]; –

+0

@AustinMullins這正是人們應該使用矢量的情況。使用動態分配的數組根本沒有意義。沒有優勢,但存在風險或遇到資源泄漏。 – juanchopanza

回答

2

您正在訪問vector中的對象而不創建它們。您的代碼應該是這樣的:

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對象。所以當你嘗試訪問對象時,程序崩潰。

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 
} 
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(); 
} 
+0

kk所以你的作品和所有,但現在我當我cout在我的程序中輸入vegi類型,它出現了兩次。 – user3747161

+0

你可以添加該代碼嗎?你在哪裏寫cout – Ali786

+0

沒關係,我反正thnx它只是一個cin.ignore()問題 – user3747161