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。
你可以放一個可運行的例子嗎?你正在使用哪種編譯器?理想情況下,兩者都應該打印5。 Push_back將創建推送對象的副本,並且默認的拷貝構造函數創建源對象的按位副本。可能會在這裏玩一些編譯器優化。在這裏檢查http://ideone.com/azrCfy。他們正在打印相同的價值。 –
「爲什麼這兩個印刷品有不同的價值」 - 他們沒有,[**看到它現場**](http://ideone.com/GbnzXb),並提供工具鏈信息。 – WhozCraig
找到了bug傢伙。在我的拷貝構造函數中,我忘記了包含變量x。非常感謝你 – user4168715