2015-05-24 85 views
0

嗨我有一個問題推回對象的對象的向量。如何正確push_back對象?

class boxes { 
protected: 
    int x = 0; 
public: 
    void setx (int input) { 
     x = input; 
    } 
    int getx() { 
     return x; 
    } 
} box; 

box.setx(5); 
vector <boxes> tetris; 
tetris.push_back(box); 
cout << box.getx(); 
cout << tetris.back().getx(); 

爲什麼這兩個打印有不同的值?第一個是給我x = 5,第二個x = 0。

+0

你可以放一個可運行的例子嗎?你正在使用哪種編譯器?理想情況下,兩者都應該打印5。 Push_back將創建推送對象的副本,並且默認的拷貝構造函數創建源對象的按位副本。可能會在這裏玩一些編譯器優化。在這裏檢查http://ideone.com/azrCfy。他們正在打印相同的價值。 –

+1

「爲什麼這兩個印刷品有不同的價值」 - 他們沒有,[**看到它現場**](http://ideone.com/GbnzXb),並提供工具鏈信息。 – WhozCraig

+0

找到了bug傢伙。在我的拷貝構造函數中,我忘記了包含變量x。非常感謝你 – user4168715

回答

0

如果您提供了一個複製構造函數,請確保您正確實施它。我的錯誤在那裏。