2016-10-16 53 views
-1

我們的老師告訴我們要創建一個對象向量並對其執行操作,但我無法理解如何正確地做到這一點:我試圖用最少的數據創建一個簡單的項目,以便我能知道我在做什麼。如何將元素添加到對象的矢量並打印它們?

我有這個類

class Obj { 

    private: 

     int num; 

    public: 

     Obj(); 

     void setNum(int nuovo_num); 
     int getNum(); 

}; 

然後這一次,所有與obj

class VettObj{ 

    private: 

     vector<Obj> vett; 

    public: 

     VettObj(); 

     void setVett(); 
     void stampaVett(); 

}; 

我最初的想法是使用迭代器的載體,但我只是做一團糟,並幾乎沒有用的研究,我決定使用一個通用的整數計數器。

我發現我不應該在VettObj構造函數中寫任何東西,因爲它會自動初始化東西,所以我將它留爲空白。

,增加元素的方法是這樣的

void VettObj::setVett(){ 


    Obj temp; 
    int i; 

    i = 0; 
    while(i < 5){ 


     temp.setNum(10); 

     vett.push_back(temp); 

     i++; 
    } 

} 

而且,打印元素

void VettObj::stampaVett(){ 


    int i; 

    i = 0; 
    while(i < 5){ 

     vett[i].getNum(); 

     i++; 
    } 

} 

當我編譯了一個,一切順利,但是當我運行程序我什麼也沒得到的屏幕。我不想主要使用矢量函數(如果不是必需的話),因爲我看到很多人都可以這樣做。我真的想知道如何用迭代器來做到這一點。幫助?

+0

解決此類問題的正確工具是您的調試器。在*堆棧溢出問題之前,您應該逐行執行您的代碼。如需更多幫助,請閱讀[如何調試小程序(由Eric Lippert撰寫)](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)。至少,您應該\編輯您的問題,以包含一個[最小,完整和可驗證](http://stackoverflow.com/help/mcve)示例,該示例再現了您的問題,以及您在調試器。 –

+0

問一個**具體的**問題。程序起源的詳細背景故事與任何事情都沒有關係。 –

+0

你可能應該從「Hello World」開始。你爲什麼在你的程序中想什麼會打印在屏幕上?它不會神奇地閱讀你的想法並做你想做的事。 – user463035818

回答

0

你實際上並沒有在stampaVett()方法中打印任何東西。 你可以嘗試使用:

void VettObj::stampaVett(){ 

    int i = 0; 

    while (i < 5){ 

     std::cout << vett[i].getNum(); 

     i++; 
    } 

} 

我也建議使用英語的方法或變量,而不是意大利,因爲SO是國際社會。

+0

是的,就是這樣:最終,我所做的研究並非無用。謝謝。 – AlbyTree

相關問題